// Licensed to Cloudera, Inc. under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  Cloudera, Inc. licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/* parser generated by jison 0.4.17 */
/*
  Returns a Parser object of the following structure:

  Parser: {
    yy: {}
  }

  Parser.prototype: {
    yy: {},
    trace: function(),
    symbols_: {associative list: name ==> number},
    terminals_: {associative list: number ==> name},
    productions_: [...],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
    table: [...],
    defaultActions: {...},
    parseError: function(str, hash),
    parse: function(input),

    lexer: {
        EOF: 1,
        parseError: function(str, hash),
        setInput: function(input),
        input: function(),
        unput: function(str),
        more: function(),
        less: function(n),
        pastInput: function(),
        upcomingInput: function(),
        showPosition: function(),
        test_match: function(regex_match_array, rule_index),
        next: function(),
        lex: function(),
        begin: function(condition),
        popState: function(),
        _currentRules: function(),
        topState: function(),
        pushState: function(condition),

        options: {
            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
        },

        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
        rules: [...],
        conditions: {associative list: name ==> set},
    }
  }


  token location info (@$, _$, etc.): {
    first_line: n,
    last_line: n,
    first_column: n,
    last_column: n,
    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
  }


  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
    text:        (matched text)
    token:       (the produced terminal token, if any)
    line:        (yylineno)
  }
  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
    loc:         (yylloc)
    expected:    (string describing the set of expected tokens)
    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
  }
*/
import SqlParseSupport from 'parse/sql/generic/sqlParseSupport';

var genericSyntaxParser = (function(){
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[4,8,12,16,162,174,241,271,321,337,340,344],$V1=[2,625],$V2=[340,344],$V3=[2,626],$V4=[1,35],$V5=[1,27],$V6=[1,28],$V7=[1,18],$V8=[1,36],$V9=[1,33],$Va=[1,34],$Vb=[1,29],$Vc=[1,32],$Vd=[1,30],$Ve=[1,45],$Vf=[1,47],$Vg=[1,43],$Vh=[1,46],$Vi=[1,42],$Vj=[81,340,344],$Vk=[2,451],$Vl=[1,53],$Vm=[1,61],$Vn=[1,62],$Vo=[1,75],$Vp=[2,413],$Vq=[1,80],$Vr=[1,81],$Vs=[32,267],$Vt=[16,32,43,50,54,55,63,77,79,81,85,95,107,108,109,112,113,120,125,129,140,142,154,182,190,201,214,215,216,217,218,219,220,221,222,226,228,232,239,240,253,262,264,267,340,344,348,349,352,356,357,358,359,360,361,363,366,367,368,369,371,374,375,376,377,379,380,382,384,385,386,387,388,391,392,406,442],$Vu=[81,262,340,344],$Vv=[63,113,228,340,344,348,349],$Vw=[2,783],$Vx=[1,95],$Vy=[63,113,228,348,349,358],$Vz=[63,113,228,306,340,344,348,349,358],$VA=[2,779],$VB=[1,100],$VC=[16,63,113,228,348,349,358],$VD=[79,85,241],$VE=[1,166],$VF=[1,167],$VG=[1,122],$VH=[1,117],$VI=[1,128],$VJ=[1,130],$VK=[1,132],$VL=[1,115],$VM=[1,164],$VN=[1,168],$VO=[1,169],$VP=[1,133],$VQ=[1,155],$VR=[1,156],$VS=[1,157],$VT=[1,158],$VU=[1,159],$VV=[1,160],$VW=[1,161],$VX=[1,162],$VY=[1,148],$VZ=[1,149],$V_=[1,142],$V$=[1,131],$V01=[1,143],$V11=[1,118],$V21=[1,120],$V31=[1,119],$V41=[1,123],$V51=[1,121],$V61=[1,163],$V71=[1,165],$V81=[54,55,63,79,81,95,96,107,112,113,228,241,253,267,269,270,271,294,295,296,297,298,299,300,301,302,303,304,306,307,348,349,351,352,355,358,362,370,389,390],$V91=[81,85,182,262,340,344],$Va1=[2,1103],$Vb1=[1,221],$Vc1=[1,236],$Vd1=[1,237],$Ve1=[1,225],$Vf1=[1,222],$Vg1=[1,223],$Vh1=[1,224],$Vi1=[1,231],$Vj1=[1,230],$Vk1=[1,229],$Vl1=[1,232],$Vm1=[1,227],$Vn1=[1,226],$Vo1=[1,220],$Vp1=[1,228],$Vq1=[1,239],$Vr1=[1,238],$Vs1=[32,43,54,55,63,77,81,85,95,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,253,262,264,340,344,348,349,352,356,357,358,359,368,369,374,376,377,379,380,382,386,392,442],$Vt1=[1,245],$Vu1=[1,251],$Vv1=[1,253],$Vw1=[32,43,54,55,63,77,79,81,85,95,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,253,262,264,340,344,348,349,352,356,357,358,359,368,369,374,376,377,379,380,382,386,392,442],$Vx1=[1,258],$Vy1=[32,43,50,54,55,63,77,79,81,85,95,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,253,262,264,267,340,344,348,349,352,356,357,358,359,368,369,374,376,377,379,380,382,386,392,442],$Vz1=[32,43,54,55,63,77,81,85,95,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,253,262,264,318,340,344,348,349,352,356,357,358,359,368,369,374,376,377,379,380,382,386,392,442],$VA1=[43,54,55,63,81,85,113,125,140,154,190,201,214,215,216,217,218,219,220,221,222,226,228,232,262,264,340,344,348,349,358],$VB1=[43,50,81,85,95,96,109,182,190,201,214,215,216,217,218,219,220,221,222,226,232,262,264,340,344],$VC1=[81,85],$VD1=[2,46],$VE1=[1,286],$VF1=[43,340,344],$VG1=[43,125,340,344],$VH1=[43,50,77,79,125,340,344],$VI1=[43,50],$VJ1=[264,340,344],$VK1=[85,182,264,340,344],$VL1=[32,50,81,85],$VM1=[174,241],$VN1=[2,1081],$VO1=[81,190,201,226,232,262,340,344],$VP1=[2,464],$VQ1=[1,314],$VR1=[96,247,269,270],$VS1=[81,85,182,190,201,214,215,216,217,218,219,220,221,222,226,232,262,264,340,344],$VT1=[43,54,55,63,81,85,95,113,129,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,262,264,340,344,348,349,356,358,359,368,369,377,382,386,392,442],$VU1=[32,43,54,55,63,81,85,95,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,253,262,264,340,344,348,349,352,356,357,358,359,368,369,377,382,386,392,442],$VV1=[368,369,392],$VW1=[54,55,63,79,95,96,107,112,113,228,267,269,270,271,294,295,296,297,298,299,300,301,302,303,304,306,307,348,349,351,352,355,358,362,370,389,390],$VX1=[32,43,50,54,55,63,77,81,85,95,96,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,222,226,228,232,239,240,253,262,264,340,344,348,349,352,356,357,358,359,368,369,374,376,377,379,380,382,386,392,442],$VY1=[81,201,226,232,262,340,344],$VZ1=[81,85,190,201,226,232,262,264,340,344],$V_1=[1,415],$V$1=[1,418],$V02=[1,416],$V12=[1,420],$V22=[1,417],$V32=[1,419],$V42=[1,422],$V52=[1,421],$V62=[81,85,190,201,214,215,216,217,218,219,220,221,222,226,232,262,264,340,344],$V72=[43,54,55,63,81,85,113,190,201,214,215,216,217,218,219,220,221,222,226,228,232,262,264,340,344,348,349,358],$V82=[32,43,54,55,63,81,85,95,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,262,264,340,344,348,349,356,358,359,368,369,377,382,386,392,442],$V92=[43,54,55,63,81,85,113,129,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,262,264,340,344,348,349,356,358,368,369,377,382,386,392,442],$Va2=[1,440],$Vb2=[81,232],$Vc2=[1,454],$Vd2=[1,480],$Ve2=[1,481],$Vf2=[1,482],$Vg2=[1,468],$Vh2=[1,469],$Vi2=[1,470],$Vj2=[1,471],$Vk2=[1,472],$Vl2=[1,473],$Vm2=[1,474],$Vn2=[1,475],$Vo2=[1,476],$Vp2=[1,477],$Vq2=[1,478],$Vr2=[1,479],$Vs2=[81,226,232,262,340,344],$Vt2=[63,79,113,228,348,349,358],$Vu2=[1,514],$Vv2=[81,85,232],$Vw2=[32,43,54,55,63,77,81,85,95,108,109,113,129,142,182,190,201,214,215,216,217,218,219,220,221,222,226,228,232,239,240,253,262,264,340,344,348,349,352,356,357,358,359,368,369,374,376,377,379,380,382,386,392,442],$Vx2=[1,522],$Vy2=[85,340,344],$Vz2=[1,538],$VA2=[1,539],$VB2=[50,81,85,95,96,109],$VC2=[2,893],$VD2=[1,542],$VE2=[81,226,262,340,344],$VF2=[81,85,190,201,214,215,216,217,218,219,220,221,226,232,262,264,340,344],$VG2=[2,372],$VH2=[1,558],$VI2=[50,81,85,95,96],$VJ2=[81,85,201,226,232,262,340,344],$VK2=[359,497],$VL2=[1,614],$VM2=[85,109],$VN2=[81,356,364,389,497],$VO2=[2,1139],$VP2=[81,85,129,226,262,340,344,382],$VQ2=[81,356],$VR2=[2,1149],$VS2=[1,647],$VT2=[1,648],$VU2=[1,649],$VV2=[1,657],$VW2=[1,658],$VX2=[2,1154],$VY2=[1,665],$VZ2=[372,378],$V_2=[2,196],$V$2=[2,197];
var parser = {trace: function trace () { },
yy: {},
symbols_: {"error":2,"DataDefinition_EDIT":3,"ALTER":4,"CURSOR":5,"AlterTable_EDIT":6,"AlterView_EDIT":7,"CREATE":8,"DatabaseDefinition_EDIT":9,"TableDefinition_EDIT":10,"ViewDefinition_EDIT":11,"DROP":12,"DropDatabaseStatement_EDIT":13,"DropTableStatement_EDIT":14,"DropViewStatement_EDIT":15,"SET":16,"TruncateTableStatement_EDIT":17,"UseStatement_EDIT":18,"DataDefinition":19,"AlterTable":20,"AlterView":21,"DatabaseDefinition":22,"RoleDefinition":23,"TableDefinition":24,"ViewDefinition":25,"DropDatabaseStatement":26,"DropRoleStatement":27,"DropTableStatement":28,"DropViewStatement":29,"ALL":30,"SetOption":31,"=":32,"SetValue":33,"TruncateTableStatement":34,"UseStatement":35,"AlterTableLeftSide":36,"PartitionSpec":37,"AlterTableLeftSide_EDIT":38,"TABLE":39,"SchemaQualifiedTableIdentifier":40,"SchemaQualifiedTableIdentifier_EDIT":41,"AlterViewLeftSide":42,"AS":43,"QuerySpecification":44,"AlterViewLeftSide_EDIT":45,"QuerySpecification_EDIT":46,"VIEW":47,"OptionalComment":48,"Comment":49,"COMMENT":50,"QuotedValue":51,"OptionalComment_INVALID":52,"Comment_INVALID":53,"SINGLE_QUOTE":54,"DOUBLE_QUOTE":55,"VALUE":56,"DatabaseOrSchema":57,"OptionalIfNotExists":58,"RegularIdentifier":59,"DatabaseDefinitionOptionals":60,"OptionalIfNotExists_EDIT":61,"DatabaseDefinitionOptionals_EDIT":62,"ROLE":63,"TableDefinitionRightPart":64,"TableDefinitionRightPart_EDIT":65,"TableIdentifierAndOptionalColumnSpecification":66,"OptionalPartitionedBy":67,"OptionalAsSelectStatement":68,"TableIdentifierAndOptionalColumnSpecification_EDIT":69,"PartitionedBy_EDIT":70,"OptionalAsSelectStatement_EDIT":71,"SchemaQualifiedIdentifier":72,"OptionalColumnSpecificationsOrLike":73,"OptionalColumnSpecificationsOrLike_EDIT":74,"SchemaQualifiedIdentifier_EDIT":75,"ParenthesizedColumnSpecificationList":76,"LIKE":77,"ParenthesizedColumnSpecificationList_EDIT":78,"(":79,"ColumnSpecificationList":80,")":81,"ColumnSpecificationList_EDIT":82,"RightParenthesisOrError":83,"ColumnSpecification":84,",":85,"ColumnSpecification_EDIT":86,"ColumnIdentifier":87,"ColumnDataType":88,"OptionalColumnOptions":89,"ColumnDataType_EDIT":90,"ColumnOptions_EDIT":91,"ColumnOptions":92,"ColumnOption":93,"ColumnOption_EDIT":94,"NOT":95,"NULL":96,"PrimitiveType":97,"ArrayType":98,"MapType":99,"StructType":100,"ArrayType_INVALID":101,"MapType_INVALID":102,"StructType_INVALID":103,"ArrayType_EDIT":104,"MapType_EDIT":105,"StructType_EDIT":106,"ARRAY":107,"<":108,">":109,"AnyCursor":110,"GreaterThanOrError":111,"MAP":112,"STRUCT":113,"StructDefinitionList":114,"StructDefinitionList_EDIT":115,"StructDefinition":116,"StructDefinition_EDIT":117,"Commas":118,"RegularOrBacktickedIdentifier":119,":":120,"ColumnDataTypeList":121,"ColumnDataTypeList_EDIT":122,"ColumnDataTypeListInner_EDIT":123,"PartitionedBy":124,"PARTITION":125,"BY":126,"RangeClause":127,"RangeClause_EDIT":128,"RANGE":129,"ParenthesizedColumnList":130,"ParenthesizedPartitionValuesList":131,"ParenthesizedColumnList_EDIT":132,"ParenthesizedPartitionValuesList_EDIT":133,"PartitionValueList":134,"PartitionValueList_EDIT":135,"PartitionValue":136,"PartitionValue_EDIT":137,"ValueExpression":138,"LessThanOrEqualTo":139,"VALUES":140,"ValueExpression_EDIT":141,"COMPARISON_OPERATOR":142,"CommitLocations":143,"OptionalParenthesizedViewColumnList":144,"ParenthesizedViewColumnList_EDIT":145,"ParenthesizedViewColumnList":146,"ViewColumnList":147,"ViewColumnList_EDIT":148,"ColumnReference":149,"OptionalIfExists":150,"OptionalCascade":151,"OptionalIfExists_EDIT":152,"OptionalPurge":153,"PURGE":154,"DataManipulation":155,"InsertStatement":156,"UpdateStatement":157,"InsertValuesStatement":158,"DataManipulation_EDIT":159,"InsertValuesStatement_EDIT":160,"UpdateStatement_EDIT":161,"INSERT":162,"INTO":163,"OptionalTable":164,"InsertValuesList":165,"ParenthesizedRowValuesList":166,"InValueList":167,"CommonTableExpression":168,"SelectStatement":169,"OptionalUnions":170,"SelectStatement_EDIT":171,"OptionalUnions_EDIT":172,"CommonTableExpression_EDIT":173,"WITH":174,"WithQueries":175,"WithQueries_EDIT":176,"WithQuery":177,"WithQuery_EDIT":178,"TableSubQueryInner":179,"TableSubQueryInner_EDIT":180,"FromClause":181,"FROM":182,"TableReferenceList":183,"FromClause_EDIT":184,"TableReferenceList_EDIT":185,"TableReference":186,"TableReference_EDIT":187,"OptionalGroupByClause":188,"GroupByClause":189,"GROUP":190,"GroupByColumnList":191,"GroupByClause_EDIT":192,"GroupByColumnList_EDIT":193,"ColumnGroupingSets":194,"ColumnGroupingSets_EDIT":195,"ColumnGroupingSet_EDIT":196,"ColumnReference_EDIT":197,"GroupByColumnListPartTwo_EDIT":198,"OptionalHavingClause":199,"HavingClause":200,"HAVING":201,"HavingClause_EDIT":202,"OptionalJoins":203,"Joins":204,"Joins_INVALID":205,"JoinType":206,"TablePrimary":207,"OptionalJoinCondition":208,"Join_EDIT":209,"JoinType_EDIT":210,"TablePrimary_EDIT":211,"JoinCondition_EDIT":212,"Joins_EDIT":213,"CROSS":214,"JOIN":215,"FULL":216,"OUTER":217,"INNER":218,"LEFT":219,"SEMI":220,"RIGHT":221,"ON":222,"UsingColList":223,"OptionalLimitClause":224,"LimitClause":225,"LIMIT":226,"UnsignedNumericLiteral":227,"VARIABLE_REFERENCE":228,"LimitClause_EDIT":229,"OptionalOrderByClause":230,"OrderByClause":231,"ORDER":232,"OrderByColumnList":233,"OrderByClause_EDIT":234,"OrderByColumnList_EDIT":235,"OrderByIdentifier":236,"OrderByIdentifier_EDIT":237,"OptionalAscOrDesc":238,"ASC":239,"DESC":240,"SELECT":241,"OptionalAllOrDistinct":242,"SelectList":243,"TableExpression":244,"SelectList_EDIT":245,"TableExpression_EDIT":246,"DISTINCT":247,"OptionalSelectConditions":248,"OptionalSelectConditions_EDIT":249,"SelectSpecification":250,"SelectSpecification_EDIT":251,"OptionalCorrelationName":252,"*":253,"OptionalCorrelationName_EDIT":254,"OptionalWhereClause":255,"WhereClause_EDIT":256,"WhereClause":257,"Unions":258,"Unions_EDIT":259,"UnionClause":260,"UnionClause_EDIT":261,"UNION":262,"NewStatement":263,"WHERE":264,"SearchCondition":265,"SearchCondition_EDIT":266,".":267,"SignedInteger":268,"TRUE":269,"FALSE":270,"TRUNCATE":271,"OptionalPartitionSpec":272,"UserDefinedFunction":273,"AggregateFunction":274,"OptionalOverClause":275,"AnalyticFunction":276,"OverClause":277,"CastFunction":278,"UserDefinedFunction_EDIT":279,"AggregateFunction_EDIT":280,"OptionalOverClause_EDIT":281,"AnalyticFunction_EDIT":282,"OverClause_EDIT":283,"CastFunction_EDIT":284,"OtherAggregateFunction":285,"CountFunction":286,"SumFunction":287,"OtherAggregateFunction_EDIT":288,"CountFunction_EDIT":289,"SumFunction_EDIT":290,"OtherAggregateFunction_Type":291,"UdfArgumentList":292,"UdfArgumentList_EDIT":293,"AVG":294,"MAX":295,"MIN":296,"STDDEV_POP":297,"STDDEV_SAMP":298,"VAR_POP":299,"VAR_SAMP":300,"VARIANCE":301,"COUNT":302,"SUM":303,"ANALYTIC":304,"ArbitraryFunctionName":305,"IF":306,"CAST":307,"NonParenthesizedValueExpressionPrimary":308,"ColumnOrArbitraryFunctionRef":309,"ArbitraryFunctionRightPart":310,"UnsignedValueSpecification":311,"NonParenthesizedValueExpressionPrimary_EDIT":312,"ArbitraryFunctionRightPart_EDIT":313,"UnsignedValueSpecification_EDIT":314,"ColumnOrArbitraryFunctionRef_EDIT":315,"ArbitraryFunction":316,"ArbitraryFunction_EDIT":317,"OVER":318,"WindowExpression":319,"WindowExpression_EDIT":320,"UPDATE":321,"TargetTable":322,"SetClauseList":323,"OptionalFromJoinedTable":324,"TargetTable_EDIT":325,"SetClauseList_EDIT":326,"FromJoinedTable_EDIT":327,"TableName":328,"TableName_EDIT":329,"LocalOrSchemaQualifiedName":330,"LocalOrSchemaQualifiedName_EDIT":331,"SetClause":332,"SetClause_EDIT":333,"SetTarget":334,"UpdateSource":335,"UpdateSource_EDIT":336,"USE":337,"SqlSyntax":338,"SqlStatements":339,"EOF":340,"SqlAutocomplete":341,"SqlStatements_EDIT":342,"SqlStatement":343,";":344,"SqlStatement_EDIT":345,"SetSpecification_EDIT":346,"NonReservedKeyword":347,"OPTION":348,"REGULAR_IDENTIFIER":349,"NonStartingToken":350,"!":351,"-":352,"[":353,"]":354,"~":355,"AND":356,"ARITHMETIC_OPERATOR":357,"BACKTICK":358,"BETWEEN":359,"BIGINT":360,"BOOLEAN":361,"CASE":362,"CHAR":363,"CURRENT":364,"DATABASE":365,"DECIMAL":366,"DOUBLE":367,"ELSE":368,"END":369,"EXISTS":370,"FLOAT":371,"FOLLOWING":372,"HDFS_START_QUOTE":373,"IN":374,"INT":375,"IS":376,"OR":377,"PRECEDING":378,"REGEXP":379,"RLIKE":380,"ROW":381,"ROWS":382,"SCHEMA":383,"SMALLINT":384,"STRING":385,"THEN":386,"TIMESTAMP":387,"TINYINT":388,"UNSIGNED_INTEGER":389,"UNSIGNED_INTEGER_E":390,"VARCHAR":391,"WHEN":392,"PARTIAL_CURSOR":393,"FromOrIn":394,"SingleQuotedValue":395,"SingleQuotedValue_EDIT":396,"PARTIAL_VALUE":397,"DoubleQuotedValue":398,"DoubleQuotedValue_EDIT":399,"QuotedValue_EDIT":400,"OptionalFromOrInDatabase":401,"FromOrInDatabases":402,"DatabaseIdentifier":403,"FromOrInDatabase_EDIT":404,"DatabaseIdentifier_EDIT":405,"CASCADE":406,"IfExists_EDIT":407,"IfNotExists_EDIT":408,"OptionalInDatabase":409,"OptionalPartitionSpec_EDIT":410,"PartitionSpec_EDIT":411,"PartitionSpecList":412,"PartitionSpecList_EDIT":413,"RangePartitionSpec":414,"RangePartitionComparisonOperator":415,"RangePartitionSpec_EDIT":416,"ConfigurationName":417,"PartialBacktickedOrAnyCursor":418,"PartialBacktickedIdentifier":419,"PartialBacktickedOrCursor":420,"PartialBacktickedOrPartialCursor":421,"OptionalParenthesizedColumnList":422,"OptionalParenthesizedColumnList_EDIT":423,"ColumnList":424,"ColumnList_EDIT":425,"ParenthesizedSimpleValueList":426,"SimpleValueList":427,"PartitionExpression":428,"PartitionExpression_EDIT":429,"RegularOrBackTickedSchemaQualifiedName":430,"RegularOrBackTickedSchemaQualifiedName_EDIT":431,"BasicIdentifierChain":432,"BasicIdentifierChain_EDIT":433,"DerivedColumnChain":434,"DerivedColumnChain_EDIT":435,"PartialBacktickedIdentifierOrPartialCursor":436,"OptionalTypeLength":437,"OptionalTypePrecision":438,"OptionalNot":439,"TableSubQuery":440,"ValueExpressionList":441,"BETWEEN_AND":442,"LikeRightPart":443,"CaseRightPart":444,"TableSubQuery_EDIT":445,"ValueExpressionInSecondPart_EDIT":446,"LikeRightPart_EDIT":447,"CaseRightPart_EDIT":448,"EndOrError":449,"ValueExpressionList_EDIT":450,"+":451,"UnsignedLiteral":452,"UnsignedLiteral_EDIT":453,"GeneralLiteral":454,"GeneralLiteral_EDIT":455,"ExactNumericLiteral":456,"ApproximateNumericLiteral":457,"TruthValue":458,"TablePrimaryOrJoinedTable":459,"TablePrimaryOrJoinedTable_EDIT":460,"JoinedTable":461,"JoinedTable_EDIT":462,"TableOrQueryName":463,"DerivedTable":464,"TableOrQueryName_EDIT":465,"DerivedTable_EDIT":466,"OptionalOnColumn":467,"OptionalOnColumn_EDIT":468,"PushQueryState":469,"PopQueryState":470,"SubQuery":471,"SubQuery_EDIT":472,"QueryExpression":473,"QueryExpression_EDIT":474,"QueryExpressionBody":475,"QueryExpressionBody_EDIT":476,"NonJoinQueryExpression":477,"NonJoinQueryExpression_EDIT":478,"NonJoinQueryTerm":479,"NonJoinQueryTerm_EDIT":480,"NonJoinQueryPrimary":481,"NonJoinQueryPrimary_EDIT":482,"SimpleTable":483,"SimpleTable_EDIT":484,"OptionalPartitionBy":485,"OptionalOrderByAndWindow":486,"PartitionBy_EDIT":487,"OptionalOrderByAndWindow_EDIT":488,"PartitionBy":489,"OptionalWindowSpec":490,"WindowSpec_EDIT":491,"WindowSpec":492,"RowsOrRange":493,"PopLexerState":494,"OptionalCurrentOrPreceding":495,"OptionalAndFollowing":496,"UNBOUNDED":497,"OptionalCurrentOrPreceding_EDIT":498,"OptionalAndFollowing_EDIT":499,"PushHdfsLexerState":500,"HdfsPath":501,"HDFS_PATH":502,"HDFS_END_QUOTE":503,"HdfsPath_EDIT":504,"IntegerOrUnbounded":505,"CaseWhenThenList":506,"CaseWhenThenList_EDIT":507,"CaseWhenThenListPartTwo":508,"CaseWhenThenListPartTwo_EDIT":509,"$accept":0,"$end":1},
terminals_: {2:"error",4:"ALTER",5:"CURSOR",8:"CREATE",12:"DROP",16:"SET",30:"ALL",32:"=",39:"TABLE",43:"AS",47:"VIEW",50:"COMMENT",54:"SINGLE_QUOTE",55:"DOUBLE_QUOTE",56:"VALUE",63:"ROLE",77:"LIKE",79:"(",81:")",85:",",95:"NOT",96:"NULL",107:"ARRAY",108:"<",109:">",112:"MAP",113:"STRUCT",120:":",125:"PARTITION",126:"BY",129:"RANGE",140:"VALUES",142:"COMPARISON_OPERATOR",154:"PURGE",162:"INSERT",163:"INTO",174:"WITH",182:"FROM",190:"GROUP",201:"HAVING",214:"CROSS",215:"JOIN",216:"FULL",217:"OUTER",218:"INNER",219:"LEFT",220:"SEMI",221:"RIGHT",222:"ON",226:"LIMIT",228:"VARIABLE_REFERENCE",232:"ORDER",239:"ASC",240:"DESC",241:"SELECT",247:"DISTINCT",253:"*",262:"UNION",264:"WHERE",267:".",269:"TRUE",270:"FALSE",271:"TRUNCATE",294:"AVG",295:"MAX",296:"MIN",297:"STDDEV_POP",298:"STDDEV_SAMP",299:"VAR_POP",300:"VAR_SAMP",301:"VARIANCE",302:"COUNT",303:"SUM",304:"ANALYTIC",306:"IF",307:"CAST",318:"OVER",321:"UPDATE",337:"USE",340:"EOF",344:";",346:"SetSpecification_EDIT",348:"OPTION",349:"REGULAR_IDENTIFIER",351:"!",352:"-",353:"[",354:"]",355:"~",356:"AND",357:"ARITHMETIC_OPERATOR",358:"BACKTICK",359:"BETWEEN",360:"BIGINT",361:"BOOLEAN",362:"CASE",363:"CHAR",364:"CURRENT",365:"DATABASE",366:"DECIMAL",367:"DOUBLE",368:"ELSE",369:"END",370:"EXISTS",371:"FLOAT",372:"FOLLOWING",373:"HDFS_START_QUOTE",374:"IN",375:"INT",376:"IS",377:"OR",378:"PRECEDING",379:"REGEXP",380:"RLIKE",381:"ROW",382:"ROWS",383:"SCHEMA",384:"SMALLINT",385:"STRING",386:"THEN",387:"TIMESTAMP",388:"TINYINT",389:"UNSIGNED_INTEGER",390:"UNSIGNED_INTEGER_E",391:"VARCHAR",392:"WHEN",393:"PARTIAL_CURSOR",397:"PARTIAL_VALUE",406:"CASCADE",442:"BETWEEN_AND",451:"+",497:"UNBOUNDED",502:"HDFS_PATH",503:"HDFS_END_QUOTE"},
productions_: [0,[3,2],[3,1],[3,1],[3,2],[3,1],[3,1],[3,1],[3,2],[3,1],[3,1],[3,1],[3,2],[3,1],[3,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,2],[19,4],[19,1],[19,1],[20,2],[6,1],[6,2],[6,2],[6,3],[36,3],[38,3],[38,3],[21,3],[7,1],[7,2],[7,3],[7,3],[7,3],[42,3],[45,3],[45,3],[48,0],[48,1],[49,2],[52,1],[53,2],[53,2],[53,3],[53,3],[22,3],[22,5],[9,4],[9,3],[9,5],[9,4],[9,6],[60,1],[62,1],[23,3],[24,4],[10,4],[10,4],[10,3],[64,3],[65,3],[65,3],[65,3],[65,3],[66,2],[69,2],[69,2],[73,0],[73,1],[73,2],[74,1],[74,2],[74,2],[76,3],[78,3],[80,1],[80,3],[82,1],[82,3],[82,3],[82,5],[82,2],[82,4],[82,4],[82,6],[84,3],[86,3],[86,3],[86,3],[89,0],[89,1],[92,1],[92,2],[91,1],[91,2],[91,2],[91,3],[93,2],[93,1],[93,1],[94,2],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[90,1],[90,1],[90,1],[98,4],[101,3],[104,4],[104,4],[99,6],[102,3],[105,6],[105,4],[105,6],[105,5],[100,4],[103,3],[106,4],[114,1],[114,3],[115,1],[115,2],[115,3],[115,3],[115,5],[116,4],[117,5],[117,4],[117,4],[117,4],[117,3],[117,3],[121,1],[121,3],[122,1],[122,2],[122,3],[122,3],[122,5],[123,2],[123,2],[123,1],[123,1],[111,1],[111,1],[67,0],[67,1],[124,3],[70,2],[70,3],[70,3],[127,3],[128,2],[128,2],[128,3],[128,3],[128,3],[131,3],[133,3],[133,3],[134,1],[134,3],[135,1],[135,3],[135,5],[135,3],[135,5],[136,6],[136,4],[136,4],[137,2],[137,2],[137,3],[137,4],[137,4],[137,5],[137,6],[137,6],[137,3],[137,4],[137,4],[139,1],[139,1],[68,0],[68,3],[71,3],[71,3],[143,0],[25,8],[11,4],[11,9],[11,3],[11,6],[11,7],[11,8],[11,8],[11,8],[144,0],[144,1],[146,3],[145,3],[147,2],[147,4],[148,3],[148,5],[148,5],[148,7],[26,5],[13,3],[13,3],[13,4],[13,5],[13,5],[13,6],[27,3],[28,5],[14,3],[14,4],[14,5],[14,5],[14,6],[153,0],[153,1],[29,4],[15,4],[15,5],[15,3],[15,4],[15,4],[155,1],[155,1],[156,1],[159,1],[159,1],[158,6],[160,2],[160,4],[160,4],[160,5],[160,6],[165,1],[165,3],[166,3],[164,0],[164,1],[44,3],[44,5],[44,2],[46,4],[46,3],[46,3],[46,1],[46,4],[46,3],[46,2],[46,2],[168,2],[173,2],[175,1],[175,3],[176,1],[176,3],[176,3],[176,5],[177,5],[178,2],[178,5],[178,5],[181,2],[184,2],[184,2],[183,1],[183,3],[185,1],[185,3],[185,3],[185,5],[185,3],[188,0],[188,1],[189,3],[192,3],[192,3],[192,2],[194,0],[194,1],[194,3],[194,3],[195,1],[195,3],[195,3],[195,5],[195,3],[196,1],[196,1],[191,1],[191,3],[193,1],[193,2],[193,3],[193,3],[193,3],[193,4],[193,5],[198,1],[198,2],[198,1],[199,0],[199,1],[200,2],[202,2],[202,2],[203,0],[203,1],[203,1],[204,3],[204,4],[205,1],[205,2],[209,3],[209,1],[209,3],[209,3],[209,3],[213,1],[213,2],[213,2],[213,3],[206,2],[206,2],[206,3],[206,2],[206,1],[206,3],[206,2],[206,3],[206,3],[206,2],[206,3],[206,2],[206,3],[206,3],[206,2],[210,2],[210,3],[210,3],[210,2],[210,3],[210,3],[210,3],[210,3],[210,2],[210,3],[210,3],[210,3],[210,3],[210,2],[208,0],[208,2],[223,1],[223,3],[212,2],[212,2],[224,0],[224,1],[225,2],[225,4],[225,2],[225,4],[229,2],[230,0],[230,1],[231,3],[234,3],[234,2],[233,1],[233,3],[235,1],[235,2],[235,3],[235,4],[235,5],[236,2],[237,2],[237,2],[238,0],[238,1],[238,1],[169,3],[169,4],[171,3],[171,3],[171,4],[171,4],[171,4],[171,5],[171,6],[171,4],[242,0],[242,1],[242,1],[244,2],[246,2],[246,4],[246,3],[243,1],[243,3],[245,1],[245,2],[245,3],[245,3],[245,3],[245,4],[245,3],[245,3],[245,4],[245,4],[245,4],[245,5],[245,5],[250,2],[250,1],[251,2],[251,3],[251,2],[248,5],[249,5],[249,5],[249,5],[249,5],[249,5],[249,6],[249,6],[249,6],[249,6],[249,6],[170,0],[170,1],[172,1],[258,1],[258,2],[259,1],[259,2],[259,2],[259,3],[260,4],[261,3],[261,4],[261,4],[255,0],[255,1],[257,2],[256,2],[256,2],[265,1],[266,1],[31,1],[31,3],[33,1],[33,1],[33,2],[33,1],[33,1],[33,1],[33,1],[34,4],[17,2],[17,4],[17,3],[17,4],[17,5],[17,5],[17,5],[273,2],[273,2],[273,1],[279,1],[279,2],[279,1],[279,2],[279,2],[279,2],[279,1],[274,1],[274,1],[274,1],[280,1],[280,1],[280,1],[285,4],[285,5],[288,5],[288,6],[288,5],[291,1],[291,1],[291,1],[291,1],[291,1],[291,1],[291,1],[291,1],[286,4],[286,3],[286,5],[289,5],[289,6],[289,5],[287,5],[287,3],[290,5],[290,6],[290,5],[276,3],[276,4],[282,4],[282,5],[282,4],[305,1],[305,1],[305,1],[305,1],[278,6],[278,3],[284,6],[284,5],[284,4],[284,6],[284,5],[284,4],[284,6],[284,5],[284,6],[284,5],[308,2],[308,2],[308,1],[308,1],[308,1],[308,1],[312,2],[312,2],[312,1],[312,1],[312,1],[316,2],[316,2],[317,2],[317,2],[310,2],[310,3],[313,3],[313,4],[313,3],[292,1],[292,3],[293,1],[293,3],[293,3],[293,5],[293,3],[293,5],[293,4],[293,3],[293,2],[293,2],[293,4],[275,0],[275,1],[281,1],[277,2],[277,2],[283,2],[157,6],[161,6],[161,6],[161,6],[161,6],[161,7],[161,3],[161,2],[161,2],[161,2],[322,1],[325,1],[328,1],[329,1],[323,1],[323,3],[326,1],[326,3],[326,3],[326,5],[332,3],[333,3],[333,2],[333,1],[334,1],[335,1],[336,1],[324,0],[324,2],[327,2],[327,2],[35,2],[18,2],[18,3],[338,3],[341,3],[341,3],[263,0],[339,0],[339,1],[339,4],[342,1],[342,4],[342,4],[342,7],[343,1],[343,1],[343,1],[345,1],[345,2],[345,1],[345,1],[345,1],[345,1],[347,1],[347,1],[347,1],[59,1],[59,1],[59,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[350,1],[118,1],[118,2],[110,1],[110,1],[394,1],[394,1],[57,1],[57,1],[395,3],[395,2],[396,2],[398,3],[398,2],[399,2],[51,1],[51,1],[400,1],[400,1],[401,0],[401,1],[402,2],[404,2],[151,0],[151,1],[150,0],[150,2],[407,1],[152,2],[58,0],[58,3],[408,1],[61,2],[61,3],[409,0],[409,2],[409,2],[272,0],[272,1],[410,1],[37,4],[411,4],[414,5],[416,2],[416,3],[416,4],[416,5],[416,5],[416,5],[415,1],[415,1],[415,1],[415,1],[417,1],[417,1],[418,1],[418,1],[420,1],[420,1],[421,1],[421,1],[419,2],[83,1],[83,1],[422,0],[422,1],[423,1],[130,3],[132,3],[132,3],[424,1],[424,3],[425,3],[425,5],[426,3],[427,1],[427,3],[40,1],[40,3],[41,1],[41,3],[41,3],[72,1],[72,3],[75,1],[75,3],[75,3],[403,1],[405,1],[412,1],[412,3],[413,1],[413,3],[413,3],[413,5],[428,3],[429,3],[429,3],[429,3],[429,1],[119,1],[119,3],[119,2],[430,1],[430,3],[431,1],[431,3],[330,1],[330,2],[331,1],[331,2],[149,1],[149,3],[197,1],[432,1],[432,3],[433,3],[433,5],[434,1],[434,3],[435,1],[435,3],[435,5],[435,3],[87,1],[436,1],[436,1],[97,1],[97,1],[97,2],[97,2],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,2],[437,0],[437,3],[438,0],[438,3],[438,5],[138,1],[138,2],[138,2],[138,2],[138,2],[138,4],[138,4],[138,4],[138,6],[138,2],[138,3],[138,3],[138,3],[138,3],[138,3],[138,6],[138,6],[138,5],[138,5],[138,6],[138,5],[138,3],[138,3],[138,3],[138,3],[138,3],[138,2],[138,3],[138,2],[138,3],[141,1],[141,3],[141,2],[141,2],[141,2],[141,2],[141,2],[141,2],[141,2],[141,2],[141,3],[141,4],[141,5],[141,4],[141,4],[141,4],[141,6],[141,6],[141,2],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,4],[141,3],[141,6],[141,6],[141,5],[141,5],[141,6],[141,6],[141,6],[141,6],[141,5],[141,4],[141,5],[141,5],[141,5],[141,5],[141,4],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,2],[141,3],[141,2],[141,3],[141,2],[141,3],[141,2],[141,3],[141,3],[141,4],[141,3],[141,3],[141,3],[441,1],[441,3],[450,1],[450,3],[450,3],[450,5],[450,3],[450,5],[450,4],[450,3],[450,2],[450,2],[450,4],[167,1],[167,3],[309,1],[309,3],[315,1],[268,1],[268,2],[268,2],[311,1],[314,1],[452,1],[452,1],[453,1],[227,1],[227,1],[456,1],[456,2],[456,3],[456,2],[457,2],[457,3],[457,4],[454,1],[454,1],[454,1],[455,1],[455,1],[458,1],[458,1],[439,0],[439,1],[186,1],[187,1],[459,1],[459,1],[460,1],[460,1],[461,2],[462,2],[462,2],[207,2],[207,2],[211,2],[211,2],[211,2],[463,1],[465,1],[464,1],[466,1],[467,0],[467,2],[468,2],[468,2],[469,0],[470,0],[440,3],[440,4],[445,3],[445,3],[179,2],[180,3],[471,1],[472,1],[473,1],[474,1],[475,1],[476,1],[477,1],[478,1],[479,1],[480,1],[481,1],[482,1],[483,1],[484,1],[252,0],[252,1],[252,1],[252,2],[252,2],[254,1],[254,1],[254,2],[254,2],[254,2],[319,4],[320,4],[320,4],[320,5],[320,7],[485,0],[485,1],[489,3],[487,2],[487,3],[487,3],[486,0],[486,2],[488,1],[488,3],[488,2],[490,0],[490,1],[492,5],[492,5],[491,2],[491,6],[491,5],[491,5],[491,5],[491,4],[494,0],[500,0],[501,3],[504,5],[504,4],[504,3],[504,3],[504,2],[493,1],[493,1],[495,0],[495,2],[495,2],[498,2],[498,2],[496,0],[496,3],[496,3],[499,2],[499,3],[499,3],[505,1],[505,1],[446,3],[446,3],[446,3],[443,2],[443,2],[443,2],[447,2],[447,2],[447,2],[447,2],[447,2],[447,2],[444,2],[444,4],[448,2],[448,4],[448,4],[448,3],[448,4],[448,3],[448,4],[448,4],[448,3],[448,4],[448,3],[449,1],[449,1],[506,1],[506,2],[507,1],[507,2],[507,3],[507,3],[507,2],[508,4],[509,2],[509,3],[509,4],[509,4],[509,3],[509,3],[509,4],[509,2],[509,3],[509,2],[509,3],[509,3],[509,4],[509,3],[509,4],[509,4],[509,5],[509,4],[509,3]],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
/* this == yyval */

var $0 = $$.length - 1;
switch (yystate) {
case 1:

     parser.suggestKeywords(['TABLE', 'VIEW']);
   
break;
case 4: case 8:

     parser.suggestKeywords(['DATABASE', 'ROLE', 'SCHEMA', 'TABLE', 'VIEW']);
   
break;
case 12:

     parser.suggestSetOptions();
   
break;
case 34: case 43: case 238: case 242: case 480: case 600:

     parser.addTablePrimary($$[$0]);
   
break;
case 35: case 233:

     if (parser.yy.result.suggestTables) {
       parser.yy.result.suggestTables.onlyTables = true;
     }
   
break;
case 36:

     parser.suggestTables({ onlyTables: true });
     parser.suggestDatabases({ appendDot: true });
   
break;
case 39: case 280:

     parser.suggestKeywords(['AS']);
   
break;
case 41: case 200: case 209: case 281: case 637: case 1086:

     parser.suggestKeywords(['SELECT']);
   
break;
case 44: case 243:

     if (parser.yy.result.suggestTables) {
       parser.yy.result.suggestTables.onlyViews = true;
     }
   
break;
case 45:

     parser.suggestTables({ onlyViews: true });
     parser.suggestDatabases({ appendDot: true });
   
break;
case 55:

     parser.addNewDatabaseLocation(_$[$0-1], [{ name: $$[$0-1] }]);
   
break;
case 56: case 66:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
   
break;
case 58:

     if (!$$[$0-2]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
     parser.addNewDatabaseLocation(_$[$0], [{ name: $$[$0] }]);
   
break;
case 59:

     parser.addNewDatabaseLocation(_$[$0], [{ name: $$[$0] }]);
   
break;
case 60:

     parser.addNewDatabaseLocation(_$[$0-2], [{ name: $$[$0-2] }]);
   
break;
case 61:

     if (!$$[$0]) {
       parser.suggestKeywords(['COMMENT']);
     }
   
break;
case 72:

     var keywords = [];
     if (!$$[$0-2] && !$$[$0-1]) {
       keywords.push({ value: 'LIKE', weight: 1 });
     } else {
       if (!$$[$0-1]) {
         keywords.push({ value: 'PARTITIONED BY', weight: 12 });
       }
       keywords.push({ value: 'AS', weight: 1 });
     }

     if (keywords.length > 0) {
       parser.suggestKeywords(keywords);
     }
   
break;
case 73:

     parser.addNewTableLocation(_$[$0-1], $$[$0-1], $$[$0]);
     this.$ = $$[$0];
   
break;
case 78:
this.$ = [];
break;
case 80: case 597: case 617: case 833:

     parser.suggestTables();
     parser.suggestDatabases({ appendDot: true });
   
break;
case 82: case 218: case 220: case 262: case 432: case 565: case 568: case 763: case 766: case 855: case 908: case 1083:
this.$ = $$[$0-1];
break;
case 84: case 273:
this.$ = [$$[$0]];
break;
case 85:
this.$ = $$[$0-2].concat($$[$0]);
break;
case 90: case 92:

     parser.checkForKeywords($$[$0-1]);
   
break;
case 91: case 93:

     parser.checkForKeywords($$[$0-3]);
   
break;
case 94:

     this.$ = $$[$0-2];
     this.$.type = $$[$0-1];
     var keywords = [];
     if (!$$[$0]['comment']) {
       keywords.push('COMMENT');
     }
     if (keywords.length > 0) {
       this.$.suggestKeywords = keywords;
     }
   
break;
case 95: case 122: case 128: case 129: case 142: case 145: case 154: case 156:

     parser.suggestKeywords(parser.getColumnDataTypeKeywords());
   
break;
case 98:
this.$ = {};
break;
case 100:

     this.$ = {};
     this.$[$$[$0]] = true;
   
break;
case 101:

     $$[$0-1][$$[$0]] = true;
   
break;
case 106: case 107:
this.$ = 'null';
break;
case 108:
this.$ = 'comment';
break;
case 109:

     parser.suggestKeywords(['NULL']);
   
break;
case 127:

     parser.suggestKeywords(parser.getTypeKeywords());
   
break;
case 141: case 144:

     parser.suggestKeywords(['COMMENT']);
   
break;
case 163: case 1121:

     parser.suggestKeywords(['BY']);
   
break;
case 164:

     parser.suggestKeywords(['RANGE']);
   
break;
case 173: case 178: case 179:

     parser.suggestKeywords(['PARTITION']);
   
break;
case 185:

     parser.suggestKeywords(['VALUE', 'VALUES']);
   
break;
case 186:

     if ($$[$0].endsWithLessThanOrEqual) {
      parser.suggestKeywords(['VALUES']);
     }
   
break;
case 187: case 190: case 193:

     parser.suggestKeywords(['<', '<=']);
   
break;
case 188: case 798: case 801:

     parser.suggestKeywords(['VALUES']);
   
break;
case 191: case 194:

     parser.suggestFunctions();
   
break;
case 202:

     parser.commitLocations();
   
break;
case 204:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
     parser.suggestDatabases({ appendDot: true });
   
break;
case 205:

     if (!$$[$0-6]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
   
break;
case 208:

     var keywords = [{value: 'AS', weight: 1 }];
     if (!$$[$0-1]) {
       keywords.push({ value: 'COMMENT', weight: 3 });
     }
     parser.suggestKeywords(keywords);
   
break;
case 215:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['COMMENT']);
     }
   
break;
case 219: case 221:
this.$ = $$[$0-3];
break;
case 225:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
     parser.suggestDatabases();
   
break;
case 226:

     parser.suggestKeywords(['CASCADE']);
   
break;
case 228:

     if (!$$[$0-3]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 230: case 485:

     parser.addTablePrimary($$[$0-1]);
   
break;
case 232:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
     parser.suggestTables({ onlyTables: true });
     parser.suggestDatabases({
       appendDot: true
     });
   
break;
case 235:

     parser.addTablePrimary($$[$0-2]);
     if (!$$[$0-1]) {
       parser.suggestKeywords(['PURGE']);
     }
   
break;
case 239:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
     parser.suggestTables({ onlyViews: true });
     parser.suggestDatabases({ appendDot: true });
   
break;
case 240:

     parser.addTablePrimary($$[$0]);
     if (!$$[$0-2]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 249:

     $$[$0-2].owner = 'insert';
     parser.addTablePrimary($$[$0-2]);
   
break;
case 250:

     parser.suggestKeywords(['INTO']);
   
break;
case 251:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['TABLE']);
     }
     parser.suggestTables();
     parser.suggestDatabases({ appendDot: true });
   
break;
case 253:

     $$[$0-1].owner = 'insert';
     parser.addTablePrimary($$[$0-1]);
     parser.suggestKeywords(['VALUES']);
   
break;
case 261: case 434:
this.$ = $$[$0-2];
break;
case 263:

     parser.addCommonTableExpressions($$[$0-3]);
   
break;
case 264: case 265: case 276:

     parser.addCommonTableExpressions($$[$0-2]);
   
break;
case 271: case 287: case 311: case 387: case 391: case 429: case 439: case 466: case 616: case 1008: case 1010: case 1065: case 1120: case 1195:
this.$ = $$[$0];
break;
case 274:
this.$ = $$[$0-2].concat([$$[$0]]);
break;
case 278:

     parser.addCommonTableExpressions($$[$0-4]);
   
break;
case 279:

     parser.addCteAliasLocation(_$[$0-4], $$[$0-4]);
     $$[$0-1].alias = $$[$0-4];
     this.$ = $$[$0-1];
   
break;
case 283:

     this.$ = { tableReferenceList : $$[$0] }
   
break;
case 284: case 292:

       parser.suggestTables();
       parser.suggestDatabases({ appendDot: true });
   
break;
case 295:

     this.$ = { valueExpression: $$[$0] };
   
break;
case 296: case 398:

     parser.suggestSelectListAliases();
   
break;
case 297:

     parser.valueExpressionSuggest();
     parser.suggestSelectListAliases();
     parser.suggestGroupBys({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 298:

     parser.suggestKeywords(['BY']);
     parser.suggestGroupBys({ prefix: 'BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 308: case 611: case 823: case 826: case 827: case 852: case 853: case 874: case 877:

     parser.suggestColumns();
   
break;
case 313: case 314: case 320: case 321: case 851: case 1079: case 1122:

     parser.valueExpressionSuggest();
   
break;
case 325:

     parser.valueExpressionSuggest();
     parser.suggestAggregateFunctions();
     parser.suggestSelectListAliases(true);
   
break;
case 326:

     parser.suggestAggregateFunctions();
     parser.suggestSelectListAliases(true);
   
break;
case 330:

     if ($$[$0] && $$[$0].valueExpression) {
       this.$ = $$[$0].valueExpression;
     } else {
       this.$ = {};
     }
     this.$.joinType = $$[$0-2];
     if ($$[$0].noJoinCondition) {
       this.$.suggestJoinConditions = { prependOn: true, tablePrimaries: parser.yy.latestTablePrimaries.concat() }
     }
     if ($$[$0].suggestKeywords) {
       this.$.suggestKeywords = $$[$0].suggestKeywords;
     }
     if (parser.yy.latestTablePrimaries.length > 0) {
        parser.yy.latestTablePrimaries[parser.yy.latestTablePrimaries.length - 1].join = true;
     }
   
break;
case 331:

     if ($$[$0] && $$[$0].valueExpression) {
       this.$ = $$[$0].valueExpression;
     } else {
       this.$ = {};
     }
     this.$.joinType = $$[$0-3];
     if ($$[$0].noJoinCondition) {
       this.$.suggestJoinConditions = { prependOn: true, tablePrimaries: parser.yy.latestTablePrimaries.concat() }
     }
     if ($$[$0].suggestKeywords) {
       this.$.suggestKeywords = $$[$0].suggestKeywords;
     }
     if (parser.yy.latestTablePrimaries.length > 0) {
       parser.yy.latestTablePrimaries[parser.yy.latestTablePrimaries.length - 1].join = true;
     }
   
break;
case 332:
this.$ = { joinType: $$[$0] };
break;
case 333:
this.$ = { joinType: $$[$0-1] };
break;
case 334:

     if ($$[$0-2].suggestKeywords) {
       parser.suggestKeywords($$[$0-2].suggestKeywords);
     }
   
break;
case 335:

     if ($$[$0].suggestKeywords) {
       parser.suggestKeywords($$[$0].suggestKeywords);
     }
   
break;
case 338:

     if (parser.yy.latestTablePrimaries.length > 0) {
       var idx = parser.yy.latestTablePrimaries.length - 1;
       var tables = [];
       do {
         var tablePrimary = parser.yy.latestTablePrimaries[idx];
         if (!tablePrimary.subQueryAlias) {
           tables.unshift(tablePrimary.alias ? { identifierChain: tablePrimary.identifierChain, alias: tablePrimary.alias } : { identifierChain: tablePrimary.identifierChain })
         }
         idx--;
       } while (idx >= 0 && tablePrimary.join && !tablePrimary.subQueryAlias)

       if (tables.length > 0) {
         parser.suggestJoins({
           prependJoin: false,
           joinType: $$[$0-2],
           tables: tables
         })
       }
     }
     parser.suggestTables();
     parser.suggestDatabases({
       appendDot: true
     });
   
break;
case 343:
this.$ = 'CROSS JOIN';
break;
case 344:
this.$ = 'FULL JOIN';
break;
case 345:
this.$ = 'FULL OUTER JOIN';
break;
case 346:
this.$ = 'INNER JOIN';
break;
case 347:
this.$ = 'JOIN';
break;
case 348:
this.$ = 'LEFT INNER JOIN';
break;
case 349:
this.$ = 'LEFT JOIN';
break;
case 350:
this.$ = 'LEFT OUTER JOIN';
break;
case 351:
this.$ = 'LEFT SEMI JOIN';
break;
case 352:
this.$ = 'OUTER JOIN';
break;
case 353: case 355:
this.$ = 'RIGHT OUTER JOIN';
break;
case 354:
this.$ = 'RIGHT JOIN';
break;
case 356:
this.$ = 'RIGHT SEMI JOIN';
break;
case 357:
this.$ = 'SEMI JOIN';
break;
case 358: case 360: case 361: case 363: case 364: case 365: case 366: case 368: case 369: case 370: case 371:
this.$ = { suggestKeywords: ['JOIN'] };
break;
case 359: case 362: case 367:
this.$ = { suggestKeywords: ['OUTER'] };
break;
case 372:
this.$ = { noJoinCondition: true, suggestKeywords: ['ON'] };
break;
case 373:
this.$ = { valueExpression: $$[$0] };
break;
case 377:

     parser.valueExpressionSuggest();
     parser.suggestJoinConditions({ prependOn: false });
   
break;
case 384:

     parser.suggestKeywords([{ value: '10', weight: 10000 }, { value: '100', weight: 10000 }, { value: '1000', weight: 10000 }, { value: '5000', weight: 10000 }, { value: '10000', weight: 10000 }])
   
break;
case 388:

     if ($$[$0].emptyOrderBy) {
       parser.suggestOrderBys({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
   
break;
case 389:

     parser.suggestKeywords(['BY']);
     parser.suggestOrderBys({ prefix: 'BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 393:

     this.$ = { emptyOrderBy: false }
     parser.valueExpressionSuggest();
     parser.suggestAnalyticFunctions();
     parser.suggestSelectListAliases();
   
break;
case 394: case 395: case 396:
this.$ = { emptyOrderBy: false };
break;
case 397:
this.$ = parser.mergeSuggestKeywords($$[$0]);
break;
case 399:

     this.$ = { emptyOrderBy: true }
     parser.valueExpressionSuggest();
     parser.suggestAnalyticFunctions();
     parser.suggestSelectListAliases();
   
break;
case 400:
this.$ = { suggestKeywords: ['ASC', 'DESC'] };;
break;
case 403:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2]), _$[$0]);
     this.$ = { selectList: $$[$0] };
   
break;
case 404:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
     this.$ = { selectList: $$[$0-1], tableExpression: $$[$0] }
   
break;
case 405:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2]), _$[$0]);
     if ($$[$0].cursorAtStart) {
       var keywords = parser.getSelectListKeywords();
       if (!$$[$0-1]) {
         keywords = keywords.concat(parser.SELECT_FIRST_OPTIONAL_KEYWORDS);
       }
       parser.suggestKeywords(keywords);
     } else {
       parser.checkForSelectListKeywords($$[$0]);
     }
     if ($$[$0].suggestFunctions) {
       parser.suggestFunctions();
     }
     if ($$[$0].suggestColumns) {
       parser.suggestColumns({ identifierChain: [], source: 'select' });
     }
     if ($$[$0].suggestTables) {
       parser.suggestTables({ prependQuestionMark: true, prependFrom: true });
     }
     if ($$[$0].suggestDatabases) {
       parser.suggestDatabases({ prependQuestionMark: true, prependFrom: true, appendDot: true });
     }
     if ($$[$0].suggestAggregateFunctions && (!$$[$0-1] || $$[$0-1] === 'ALL')) {
       parser.suggestAggregateFunctions();
       parser.suggestAnalyticFunctions();
     }
   
break;
case 406:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2]), _$[$0], true);
     var keywords = parser.getSelectListKeywords();
     if (!$$[$0-1] || $$[$0-1] === 'ALL') {
       parser.suggestAggregateFunctions();
       parser.suggestAnalyticFunctions();
     }
     if (!$$[$0-1]) {
       keywords = keywords.concat(parser.SELECT_FIRST_OPTIONAL_KEYWORDS);
     }
     parser.suggestKeywords(keywords);
     parser.suggestFunctions();
     parser.suggestColumns({ identifierChain: [], source: 'select' });
     parser.suggestTables({ prependQuestionMark: true, prependFrom: true });
     parser.suggestDatabases({ prependQuestionMark: true, prependFrom: true, appendDot: true });
   
break;
case 407:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
   
break;
case 408:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
     parser.selectListNoTableSuggest($$[$0-1], $$[$0-2]);
     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'select';
     }
   
break;
case 409:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1], true);
     var keywords = parser.getSelectListKeywords();
     if (!$$[$0-2] || $$[$0-2] === 'ALL') {
       parser.suggestAggregateFunctions();
       parser.suggestAnalyticFunctions();
     }
     if (!$$[$0-2]) {
       keywords = keywords.concat(parser.SELECT_FIRST_OPTIONAL_KEYWORDS);
     }
     parser.suggestKeywords(keywords);
     parser.suggestFunctions();
     parser.suggestColumns({ identifierChain: [], source: 'select' });
     parser.suggestTables({ prependQuestionMark: true, prependFrom: true });
     parser.suggestDatabases({ prependQuestionMark: true, prependFrom: true, appendDot: true });
   
break;
case 410:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-3], _$[$0-3], $$[$0-4], _$[$0-4]), _$[$0-2]);
     parser.checkForSelectListKeywords($$[$0-2]);
   
break;
case 411:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-4], _$[$0-4], $$[$0-5], _$[$0-5]), _$[$0-3]);
     parser.checkForSelectListKeywords($$[$0-3]);
   
break;
case 412:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
     parser.checkForSelectListKeywords($$[$0-1]);
     var keywords = ['FROM'];
     if (parser.yy.result.suggestKeywords) {
       keywords = parser.yy.result.suggestKeywords.concat(keywords);
     }
     parser.suggestKeywords(keywords);
     parser.suggestTables({ prependFrom: true });
     parser.suggestDatabases({ prependFrom: true, appendDot: true });
   
break;
case 416: case 417:

     parser.addClauseLocation('whereClause', _$[$0-1], $$[$0].whereClauseLocation);
     parser.addClauseLocation('limitClause', $$[$0].limitClausePreceding || _$[$0-1], $$[$0].limitClauseLocation);
   
break;
case 418:

     var keywords = [];

     parser.addClauseLocation('whereClause', _$[$0-3], $$[$0-1].whereClauseLocation);
     parser.addClauseLocation('limitClause', $$[$0-2].limitClausePreceding || _$[$0-3], $$[$0-2].limitClauseLocation);

     if ($$[$0-3]) {
       if (typeof $$[$0-3].tableReferenceList.hasJoinCondition !== 'undefined' && !$$[$0-3].tableReferenceList.hasJoinCondition) {
         keywords.push({ value: 'ON', weight: 3 });
       }
       if ($$[$0-3].suggestKeywords) {
         keywords = parser.createWeightedKeywords($$[$0-3].suggestKeywords, 3);
       }
       if ($$[$0-3].tableReferenceList.suggestJoinConditions) {
         parser.suggestJoinConditions($$[$0-3].tableReferenceList.suggestJoinConditions);
       }
       if ($$[$0-3].tableReferenceList.suggestJoins) {
         parser.suggestJoins($$[$0-3].tableReferenceList.suggestJoins);
       }
       if ($$[$0-3].tableReferenceList.suggestKeywords) {
         keywords = keywords.concat(parser.createWeightedKeywords($$[$0-3].tableReferenceList.suggestKeywords, 3));
       }

       // Lower the weights for 'TABLESAMPLE'
       keywords.forEach(function (keyword) {
         if (keyword.value === 'TABLESAMPLE') {
           keyword.weight = 1.1;
         }
       });

       if ($$[$0-3].tableReferenceList.types) {
         var veKeywords = parser.getValueExpressionKeywords($$[$0-3].tableReferenceList);
         keywords = keywords.concat(veKeywords.suggestKeywords);
         if (veKeywords.suggestColRefKeywords) {
           parser.suggestColRefKeywords(veKeywords.suggestColRefKeywords);
           parser.addColRefIfExists($$[$0-3].tableReferenceList);
         }
       }
     }

     if ($$[$0-1].empty && $$[$0] && $$[$0].joinType.toUpperCase() === 'JOIN') {
       keywords = keywords.concat(['FULL', 'FULL OUTER', 'INNER', 'LEFT', 'LEFT OUTER', 'RIGHT', 'RIGHT OUTER']);
       parser.suggestKeywords(keywords);
       return;
     }

     if ($$[$0-1].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-1].suggestKeywords, 2));
     }

     if ($$[$0-1].suggestFilters) {
       parser.suggestFilters($$[$0-1].suggestFilters);
     }
     if ($$[$0-1].suggestGroupBys) {
       parser.suggestGroupBys($$[$0-1].suggestGroupBys);
     }
     if ($$[$0-1].suggestOrderBys) {
       parser.suggestOrderBys($$[$0-1].suggestOrderBys);
     }

     if ($$[$0-1].empty) {
       keywords.push({ value: 'UNION', weight: 2.11 });
     }

     keywords = keywords.concat([
       { value: 'FULL JOIN', weight: 1 },
       { value: 'FULL OUTER JOIN', weight: 1 },
       { value: 'INNER JOIN', weight: 1 },
       { value: 'JOIN', weight: 1 },
       { value: 'LEFT JOIN', weight: 1 },
       { value: 'LEFT OUTER JOIN', weight: 1 },
       { value: 'RIGHT JOIN', weight: 1 },
       { value: 'RIGHT OUTER JOIN', weight: 1 }
     ]);
     parser.suggestKeywords(keywords);
  
break;
case 419:

     // A couple of things are going on here:
     // - If there are no SelectConditions (WHERE, GROUP BY, etc.) we should suggest complete join options
     // - If there's an OptionalJoin at the end, i.e. 'SELECT * FROM foo | JOIN ...' we should suggest
     //   different join types
     // - The FromClause could end with a valueExpression, in which case we should suggest keywords like '='
     //   or 'AND' based on type

     if (!$$[$0-1]) {
       parser.addClauseLocation('whereClause', _$[$0-2]);
       parser.addClauseLocation('limitClause', _$[$0-2]);
       return;
     }
     parser.addClauseLocation('whereClause', _$[$0-2], $$[$0-1].whereClauseLocation);
     parser.addClauseLocation('limitClause', $$[$0-1].limitClausePreceding || _$[$0-2], $$[$0-1].limitClauseLocation);
     var keywords = [];

     if ($$[$0-1].suggestColRefKeywords) {
       parser.suggestColRefKeywords($$[$0-1].suggestColRefKeywords);
       parser.addColRefIfExists($$[$0-1]);
     }

     if ($$[$0-1].suggestKeywords && $$[$0-1].suggestKeywords.length) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-1].suggestKeywords, 2));
     }

     if ($$[$0-1].cursorAtEnd) {
       keywords.push({ value: 'UNION', weight: 2.11 });
     }
     parser.suggestKeywords(keywords);
   
break;
case 420:
this.$ = [ $$[$0] ];
break;
case 421:

     $$[$0-2].push($$[$0]);
   
break;
case 423: case 424:

     this.$ = { cursorAtStart : true, suggestFunctions: true, suggestColumns: true, suggestAggregateFunctions: true };
   
break;
case 426:

     parser.checkForSelectListKeywords($$[$0-2]);
   
break;
case 427:

     parser.checkForSelectListKeywords($$[$0-3]);
   
break;
case 428:

     this.$ = { suggestKeywords: parser.getSelectListKeywords(), suggestTables: true, suggestDatabases: true, suggestFunctions: true, suggestColumns: true, suggestAggregateFunctions: true };
   
break;
case 430: case 431: case 433:

     this.$ = { suggestKeywords: parser.getSelectListKeywords(), suggestFunctions: true, suggestColumns: true, suggestAggregateFunctions: true,  };
   
break;
case 435:

     if ($$[$0]) {
       parser.addColumnAliasLocation($$[$0].location, $$[$0].alias, _$[$0-1]);
       this.$ = { valueExpression: $$[$0-1], alias: $$[$0].alias };
       if (!parser.yy.selectListAliases) {
         parser.yy.selectListAliases = [];
       }
       parser.yy.selectListAliases.push($$[$0-1].function && $$[$0-1].types && $$[$0-1].types.length && $$[$0-1].types[0] === 'UDFREF' ? { name: $$[$0].alias, udfRef: $$[$0-1].function, types: $$[$0-1].types } : { name: $$[$0].alias, types: $$[$0-1].types || ['T'] });
     } else {
       this.$ = { valueExpression: $$[$0-1] }
     }
   
break;
case 436:

     parser.addAsteriskLocation(_$[$0], [{ asterisk: true }]);
     this.$ = { asterisk: true }
   
break;
case 437:

     if ($$[$0]) {
       parser.addColumnAliasLocation($$[$0].location, $$[$0].alias, _$[$0-1]);
     }
   
break;
case 438:

     parser.suggestFunctions();
     parser.suggestColumns();
     parser.addColumnAliasLocation(_$[$0], $$[$0], _$[$0-2]);
     this.$ = { suggestAggregateFunctions: true };
   
break;
case 440:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]],
       [{ value: 'WHERE', weight: 7 }, { value: 'GROUP BY', weight: 6 }, { value: 'HAVING', weight: 5 }, { value: 'ORDER BY', weight: 4 }, { value: 'LIMIT', weight: 3 }],
       [true, true, true, true, true]);

     if (keywords.length > 0) {
       this.$ = { suggestKeywords: keywords, empty: !$$[$0-4] && !$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0] };
     } else {
       this.$ = {};
     }

     this.$.whereClauseLocation = $$[$0-4] ? _$[$0-4] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3], $$[$0-4], _$[$0-4]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;

     if (!$$[$0-4] && !$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0]) {
       this.$.suggestFilters = { prefix: 'WHERE', tablePrimaries: parser.yy.latestTablePrimaries.concat() };
     }
     if (!$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0]) {
       this.$.suggestGroupBys = { prefix: 'GROUP BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() };
     }
     if (!$$[$0-1] && !$$[$0]) {
       this.$.suggestOrderBys = { prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() };
     }
   
break;
case 441:

     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'where';
     }
   
break;
case 442:

     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'group by';
     }
   
break;
case 444:

     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'order by';
     }
   
break;
case 446:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-3], $$[$0-2], $$[$0-1], $$[$0]],
       [{ value: 'GROUP BY', weight: 8 }, { value: 'HAVING', weight: 7 }, { value: 'ORDER BY', weight: 5 }, { value: 'LIMIT', weight: 3 }],
       [true, true, true, true]);
     if ($$[$0-5].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-5].suggestKeywords, 1));
     }
     this.$ = parser.getValueExpressionKeywords($$[$0-5], keywords);
     this.$.cursorAtEnd = !$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0];
     if ($$[$0-5].columnReference) {
       this.$.columnReference = $$[$0-5].columnReference;
     }
     if (!$$[$0-3]) {
       parser.suggestGroupBys({ prefix: 'GROUP BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     if (!$$[$0-3] && !$$[$0-2] && !$$[$0-1]) {
       parser.suggestOrderBys({ prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3], $$[$0-5], _$[$0-5]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 447:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-2], $$[$0-1], $$[$0]],
       [{ value: 'HAVING', weight: 7 }, { value: 'ORDER BY', weight: 5 }, { value: 'LIMIT', weight: 3 }],
       [true, true, true]);
     if ($$[$0-4].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-4].suggestKeywords, 8));
     }
     if ($$[$0-4].valueExpression) {
       this.$ = parser.getValueExpressionKeywords($$[$0-4].valueExpression, keywords);
       if ($$[$0-4].valueExpression.columnReference) {
         this.$.columnReference = $$[$0-4].valueExpression.columnReference;
       }
     } else {
       this.$ = { suggestKeywords: keywords };
     }
     this.$.cursorAtEnd = !$$[$0-2] && !$$[$0-1] && !$$[$0];
     if (!$$[$0-2] && !$$[$0-1]) {
       parser.suggestOrderBys({ prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2], $$[$0-4], _$[$0-4]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 448:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-1], $$[$0]],
       [{ value: 'ORDER BY', weight: 5 }, { value: 'LIMIT', weight: 3 }],
       [true, true]);
     this.$ = { suggestKeywords: keywords, cursorAtEnd: !$$[$0-1] && !$$[$0] };
     if (!$$[$0-1]) {
       parser.suggestOrderBys({ prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-3], _$[$0-3]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 449:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0]],
       [{ value: 'LIMIT', weight: 3 }],
       [true]);
     if ($$[$0-2].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-2].suggestKeywords, 4));
     }
     this.$ = { suggestKeywords: keywords, cursorAtEnd: !$$[$0] };
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-2], _$[$0-2]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 450:

     this.$ = { suggestKeywords: [], cursorAtEnd: true };
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3], $$[$0-4], _$[$0-4], $$[$0-5], _$[$0-5]);
     this.$.limitClauseLocation = _$[$0-1];
   
break;
case 461:

     parser.suggestKeywords(['ALL', 'DISTINCT', 'SELECT']);
   
break;
case 462:

     parser.suggestKeywords(['ALL', 'DISTINCT']);
   
break;
case 467:

     if ($$[$0].suggestFilters) {
       parser.suggestFilters({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
   
break;
case 468:

     parser.suggestFunctions();
     parser.suggestColumns();
     parser.suggestKeywords(['EXISTS', 'NOT EXISTS']);
     parser.suggestFilters({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 481:

     parser.suggestKeywords(['TABLE']);
   
break;
case 482:

     parser.suggestTables();
     parser.suggestDatabases({ appendDot: true });
     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 486:

     parser.addTablePrimary($$[$0-1]);
     if (!$$[$0-2]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 488:

     if (!$$[$0]) {
       $$[$0-1].suggestKeywords = ['OVER'];
     }
   
break;
case 495:

     parser.suggestKeywords(['OVER']);
   
break;
case 504:

     this.$ = { function: $$[$0-3], types: ['UDFREF'] };
   
break;
case 505: case 523:

     parser.addFunctionArgumentLocations($$[$0-4], $$[$0-1].expressions);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 506:

     parser.valueExpressionSuggest();
     var keywords = parser.getSelectListKeywords(true);
     if (!$$[$0-2]) {
       if ($$[$0-4].toLowerCase() === 'group_concat') {
         keywords.push('ALL');
       } else {
         keywords.push('DISTINCT');
       }
     }
     if (parser.yy.result.suggestKeywords) {
       keywords = parser.yy.result.suggestKeywords.concat(keywords);
     }
     parser.suggestKeywords(keywords);
     parser.applyArgumentTypesToSuggestions($$[$0-4], 1);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 507: case 521:

     parser.suggestValueExpressionKeywords($$[$0-2].expressions[$$[$0-2].expressions.length - 1].expression);
     this.$ = { function: $$[$0-5], types: ['UDFREF'] };
   
break;
case 508:

     if ($$[$0-1].cursorAtStart) {
       var keywords = parser.getSelectListKeywords(true);
       if (!$$[$0-2]) {
         if ($$[$0-4].toLowerCase() === 'group_concat') {
           keywords.push('ALL');
         } else {
           keywords.push('DISTINCT');
         }
       }
       if (parser.yy.result.suggestKeywords) {
         keywords = parser.yy.result.suggestKeywords.concat(keywords);
       }
       parser.suggestKeywords(keywords);
     }
     if (parser.yy.result.suggestFunctions && !parser.yy.result.suggestFunctions.types) {
       parser.applyArgumentTypesToSuggestions($$[$0-4], $$[$0-1].activePosition);
     }
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 517:

     parser.addFunctionArgumentLocations($$[$0-3], [{
       expression: { text: $$[$0-1] },
       location: _$[$0-1]
     }]);
     this.$ = { function: $$[$0-3], types: ['UDFREF'] }
   
break;
case 518: case 524:

     this.$ = { function: $$[$0-2], types: ['UDFREF'] }
   
break;
case 519:

     parser.addFunctionArgumentLocations($$[$0-4], $$[$0-1].expressions);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] }
   
break;
case 520:

     parser.valueExpressionSuggest();
     var keywords = parser.getSelectListKeywords();
     if (!$$[$0-2]) {
       keywords.push('DISTINCT');
       if (parser.yy.result.suggestKeywords) {
         keywords = parser.yy.result.suggestKeywords.concat(keywords);
       }
     }
     parser.suggestKeywords(keywords);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 522:

     if ($$[$0-1].cursorAtStart) {
       var keywords = parser.getSelectListKeywords();
       if (!$$[$0-2]) {
         keywords.push('DISTINCT');
       }
       parser.suggestKeywords(keywords);
     }
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 525:

     parser.valueExpressionSuggest();
     parser.applyArgumentTypesToSuggestions($$[$0-4], 1);
     var keywords = parser.getSelectListKeywords(true);
     if (!$$[$0-2]) {
       keywords.push('DISTINCT');
     }
     if (parser.yy.result.suggestKeywords) {
       keywords = parser.yy.result.suggestKeywords.concat(keywords);
     }
     parser.suggestKeywords(keywords);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 526:

     parser.suggestValueExpressionKeywords($$[$0-2]);
     this.$ = { function: $$[$0-5], types: ['UDFREF'] };
   
break;
case 527:

     if (parser.yy.result.suggestFunctions && !parser.yy.result.suggestFunctions.types) {
       parser.applyArgumentTypesToSuggestions($$[$0-4], 1);
     }
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 528:

    this.$ = { function: $$[$0-2], types: ['UDFREF'] }
  
break;
case 529:

     parser.addFunctionArgumentLocations($$[$0-3], $$[$0-1].expressions);
     this.$ = {
       function: $$[$0-3],
       expression: $$[$0-1].expressions[$$[$0-1].expressions.length - 1].expression,
       types: ['UDFREF']
     }
   
break;
case 530:

     parser.valueExpressionSuggest();
     parser.applyArgumentTypesToSuggestions($$[$0-3], 1);
     this.$ = { function: $$[$0-3], types: ['UDFREF'] };
   
break;
case 531:

     parser.addFunctionArgumentLocations($$[$0-4], $$[$0-2].expressions);
     parser.suggestValueExpressionKeywords($$[$0-2].expressions[$$[$0-2].expressions.length - 1].expression);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 532:

     parser.addFunctionArgumentLocations($$[$0-3], $$[$0-1].expressions);
     parser.applyArgumentTypesToSuggestions($$[$0-3], $$[$0-1].activePosition);
     this.$ = { function: $$[$0-3], types: ['UDFREF'] };
   
break;
case 537:

     var expression = $$[$0-3];
     parser.extractExpressionText(expression, $$[$0-3], $$[$0-2], $$[$0-1]);
     parser.addFunctionArgumentLocations($$[$0-5], [{
       expression: expression,
       location: {
         first_line: _$[$0-3].first_line,
         last_line: _$[$0-1].last_line,
         first_column: _$[$0-3].first_column,
         last_column: _$[$0-1].last_column
       }
     }]);
     this.$ = { types: [ $$[$0-1].toUpperCase() ] }
   
break;
case 538: case 543: case 544: case 1014:
this.$ = { types: [ 'T' ] };
break;
case 539:

     parser.valueExpressionSuggest();
     this.$ = { types: [ $$[$0-1].toUpperCase() ] };
   
break;
case 540: case 541:

     parser.valueExpressionSuggest();
     this.$ = { types: [ 'T' ] };
   
break;
case 542:
this.$ = { types: [ $$[$0-1].toUpperCase() ] };
break;
case 545:

     parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'AS', weight: 2 }]);
     this.$ =  { types: [ $$[$0-1].toUpperCase() ] };
   
break;
case 546:

     parser.suggestValueExpressionKeywords($$[$0-2], [{ value: 'AS', weight: 2 }]);
     this.$ = { types: [ 'T' ] };
   
break;
case 547: case 548:

     parser.suggestKeywords(parser.getTypeKeywords());
     this.$ = { types: [ 'T' ] };
   
break;
case 549:

     // We need to handle arbitrary UDFs here instead of inside UserDefinedFunction or there will be a conflict
     // with columnReference for functions like: db.udf(foo)
     var fn = $$[$0-1].chain[$$[$0-1].chain.length - 1].name.toLowerCase();
     parser.addFunctionArgumentLocations(fn, $$[$0].expressions, $$[$0-1].chain);
     if ($$[$0-1].lastLoc && $$[$0-1].lastLoc.location) {
       $$[$0-1].lastLoc.type = 'function';
       $$[$0-1].lastLoc.function = fn;
       $$[$0-1].lastLoc.location = {
         first_line: $$[$0-1].lastLoc.location.first_line,
         last_line: $$[$0-1].lastLoc.location.last_line,
         first_column: $$[$0-1].lastLoc.location.first_column,
         last_column: $$[$0-1].lastLoc.location.last_column - 1
       }
       if ($$[$0-1].lastLoc !== $$[$0-1].firstLoc) {
          $$[$0-1].firstLoc.type = 'database';
       } else {
         delete $$[$0-1].lastLoc.identifierChain;
       }
     }
     if ($$[$0].expressions && $$[$0].expressions.length) {
       this.$ = { function: fn, expression: $$[$0].expressions[$$[$0].expressions.length - 1].expression, types: ['UDFREF'] }
     } else {
       this.$ = { function: fn, types: ['UDFREF'] }
     }
   
break;
case 550:

    parser.addFunctionLocation(_$[$0-1], $$[$0-1]);
    if ($$[$0].expressions && $$[$0].expressions.length) {
      this.$ = { function: $$[$0-1], expression: $$[$0].expressions[$$[$0].expressions.length - 1].expression, types: ['UDFREF'] }
    } else {
      this.$ = { function: $$[$0-1], types: ['UDFREF'] }
    }
  
break;
case 553:
this.$ = { types: ['COLREF'], columnReference: $$[$0].chain };
break;
case 554:
this.$ = { types: [ 'NULL' ], text: $$[$0] };
break;
case 555:

     var fn = $$[$0-1].chain[$$[$0-1].chain.length - 1].name.toLowerCase();
     parser.addFunctionArgumentLocations(fn, $$[$0].expressions, $$[$0-1].chain);
     $$[$0-1].lastLoc.type = 'function';
     $$[$0-1].lastLoc.function = fn;
     $$[$0-1].lastLoc.location = {
       first_line: $$[$0-1].lastLoc.location.first_line,
       last_line: $$[$0-1].lastLoc.location.last_line,
       first_column: $$[$0-1].lastLoc.location.first_column,
       last_column: $$[$0-1].lastLoc.location.last_column - 1
     }
     if ($$[$0-1].lastLoc !== $$[$0-1].firstLoc) {
        $$[$0-1].firstLoc.type = 'database';
     } else {
       delete $$[$0-1].lastLoc.identifierChain;
     }
     if ($$[$0].activePosition) {
       parser.applyArgumentTypesToSuggestions(fn, $$[$0].activePosition);
     }
     this.$ = { function: fn, types: ['UDFREF'] };
   
break;
case 556: case 562: case 563:

     parser.addFunctionLocation(_$[$0-1], $$[$0-1]);
     parser.addFunctionArgumentLocations($$[$0-1], $$[$0].expressions);
     if ($$[$0].activePosition) {
       parser.applyArgumentTypesToSuggestions($$[$0-1], $$[$0].activePosition);
     }
     this.$ = { function: $$[$0-1], types: ['UDFREF'] };
   
break;
case 559:

     if ($$[$0].suggestKeywords) {
       this.$ = { types: ['COLREF'], columnReference: $$[$0], suggestKeywords: $$[$0].suggestKeywords };
     } else {
       this.$ = { types: ['COLREF'], columnReference: $$[$0] };
     }
   
break;
case 560: case 561:

     parser.addFunctionLocation(_$[$0-1], $$[$0-1]);
     parser.addFunctionArgumentLocations($$[$0-1], $$[$0].expressions);
     if ($$[$0].expressions && $$[$0].expressions.length) {
       this.$ = { function: $$[$0-1], expression: $$[$0].expressions[$$[$0].expressions.length - 1].expression, types: ['UDFREF'] }
     } else {
       this.$ = { function: $$[$0-1], types: ['UDFREF'] }
     }
   
break;
case 566:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: 1,
       expressions: [{ expression: { text: '' }, location: _$[$0-1] }]
     }
   
break;
case 567:

     parser.suggestValueExpressionKeywords($$[$0-2].expressions[$$[$0-2].expressions.length - 1].expression);
     this.$ = $$[$0-3];
   
break;
case 569: case 571:

     this.$ = {
       activePosition: 1,
       expressions: [{ expression: $$[$0], location: _$[$0] }]
     }
   
break;
case 570: case 572:

     this.$ = {
       activePosition: $$[$0-2].activePosition + 1,
       expressions: $$[$0-2].expressions.concat([{ expression: $$[$0], location: _$[$0] }])
     }
   
break;
case 573:

     this.$ = {
       activePosition: 1,
       expressions: [{ expression: $$[$0-2], location: _$[$0-2] }].concat($$[$0].expressions)
     }
   
break;
case 574:

     this.$ = {
       activePosition: $$[$0-4].activePosition + 1,
       expressions: $$[$0-4].expressions.concat([{ expression: $$[$0-2], location: _$[$0-2] }]).concat($$[$0].expressions)
     }
   
break;
case 575:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: $$[$0-2].activePosition + 1,
       expressions: $$[$0-2].expressions.concat([{ expression: { text: '' }, location: _$[$0] }])
     }
   
break;
case 576:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: $$[$0-4].activePosition + 1,
       expressions: $$[$0-4].expressions.concat([{ expression: { text: '' }, location: _$[$0-2] }]).concat($$[$0].expressions)
     }
   
break;
case 577:

     parser.suggestValueExpressionKeywords($$[$0-3].expressions[$$[$0-3].expressions.length - 1].expression);
     this.$ = {
       activePosition: $$[$0-3].activePosition,
       expressions: $$[$0-3].expressions.concat($$[$0].expressions)
     }
   
break;
case 578:

     parser.valueExpressionSuggest();
     this.$ = {
       cursorAtStart : true,
       activePosition: 1,
       expressions: [{ expression: { text: '' }, location: _$[$0-2] }].concat($$[$0].expressions)
     };
   
break;
case 579:

     parser.valueExpressionSuggest();
     this.$ = {
       cursorAtStart : true,
       activePosition: 1,
       expressions: [{ expression: { text: '' }, location: _$[$0-1] }, { expression: { text: '' }, location: _$[$0] }]
     };
   
break;
case 580:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: 2,
       expressions: [{ expression: { text: '' }, location: _$[$0-1] }, { expression: { text: '' }, location: _$[$0] }]
     };
   
break;
case 581:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: 2,
       expressions: [{ expression: { text: '' }, location: _$[$0-3] }, { expression: { text: '' }, location: _$[$0-2] }].concat($$[$0].expressions)
     };
   
break;
case 593:

     parser.suggestKeywords([ 'WHERE' ]);
   
break;
case 594:

     parser.suggestKeywords([ 'SET' ]);
   
break;
case 610:

     parser.suggestKeywords([ '=' ]);
   
break;
case 619:

     if (! parser.yy.cursorFound) {
       parser.yy.result.useDatabase = $$[$0];
     }
   
break;
case 620: case 842:

     parser.suggestDatabases();
   
break;
case 621:

     parser.yy.result.useDatabase = $$[$0-1];
     if ($$[$0-1] === atob('aHVlX2F1dG9jb21wbGV0ZV9wYXJzZXI=')) {
       console.warn(atob('Q2xvdWRlcmEgMjAxNi0yMDIyIC0gSm9oYW4gQWhsZW4='));
     }
   
break;
case 623: case 624:

     return parser.yy.result;
   
break;
case 625:

     parser.prepareNewStatement();
   
break;
case 627: case 629: case 631:

     parser.addStatementLocation(_$[$0]);
   
break;
case 630: case 632:

     parser.addStatementLocation(_$[$0-3]);
   
break;
case 636:

     parser.suggestDdlAndDmlKeywords();
   
break;
case 764: case 767: case 856:
this.$ = '';
break;
case 780: case 784:

     parser.yy.correlatedSubQuery = false;
   
break;
case 782: case 787:

     parser.suggestKeywords(['EXISTS']);
   
break;
case 786:

     parser.suggestKeywords(['NOT EXISTS']);
   
break;
case 797: case 799: case 800: case 802:

     parser.suggestKeywords(['<', '<=', '<>', '=', '>', '>=']);
   
break;
case 831: case 857:

     parser.addTableLocation(_$[$0], [ { name: $$[$0] } ]);
     this.$ = { identifierChain: [ { name: $$[$0] } ] };
   
break;
case 832: case 858:

     parser.addDatabaseLocation(_$[$0-2], [ { name: $$[$0-2] } ]);
     parser.addTableLocation(_$[$0], [ { name: $$[$0-2] }, { name: $$[$0] } ]);
     this.$ = { identifierChain: [ { name: $$[$0-2] }, { name: $$[$0] } ] };
   
break;
case 834: case 839:

     parser.suggestDatabases();
     this.$ = { identifierChain: [{ name: $$[$0-2] }] };
   
break;
case 835: case 860:

     parser.suggestTablesOrColumns($$[$0-2]);
   
break;
case 836:
this.$ = [{ name: $$[$0] }];
break;
case 837:
this.$ = [{ name: $$[$0-2] }, { name: $$[$0-1] }];
break;
case 838:

     parser.suggestDatabases({ appendDot: true });
   
break;
case 859:

     parser.suggestTables();
     parser.suggestDatabases({ prependDot: true });
   
break;
case 862:
this.$ = { identifierChain: $$[$0-1].identifierChain, alias: $$[$0] };
break;
case 865:

     parser.yy.locations[parser.yy.locations.length - 1].type = 'column';
   
break;
case 866: case 1031:

     parser.addAsteriskLocation(_$[$0], $$[$0-2].concat({ asterisk: true }));
   
break;
case 868:

     this.$ = [ $$[$0].identifier ];
     parser.yy.firstChainLocation = parser.addUnknownLocation($$[$0].location, [ $$[$0].identifier ]);
   
break;
case 869:

     if (parser.yy.firstChainLocation) {
       parser.yy.firstChainLocation.firstInChain = true;
       delete parser.yy.firstChainLocation;
     }
     $$[$0-2].push($$[$0].identifier);
     parser.addUnknownLocation($$[$0].location, $$[$0-2].concat());
   
break;
case 870:

     parser.suggestColumns({
       identifierChain: $$[$0-2]
     });
     this.$ = { suggestKeywords: [{ value: '*', weight: 10000 }] };
   
break;
case 871:

     parser.suggestColumns({
       identifierChain: $$[$0-4]
     });
     this.$ = { suggestKeywords: [{ value: '*', weight: 10000 }] };
   
break;
case 872:
this.$ = [ $$[$0].identifier ];
break;
case 873:

     $$[$0-2].push($$[$0].identifier);
   
break;
case 875:

     parser.suggestColumns({ identifierChain: $$[$0-2] });
   
break;
case 876:

     parser.suggestColumns({ identifierChain: $$[$0-4] });
   
break;
case 878:
this.$ = { identifier: { name: $$[$0] }, location: _$[$0] };
break;
case 899: case 900:

     // verifyType($$[$0], 'BOOLEAN');
     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 901: case 926:

     this.$ = $$[$0];
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 902:

     // verifyType($$[$0], 'NUMBER');
     this.$ = $$[$0];
     $$[$0].types = ['NUMBER'];
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 903: case 904: case 905:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 906:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-5], $$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 907:

     this.$ = { types: [ 'BOOLEAN' ] };
     // clear correlated flag after completed sub-query (set by lexer)
     parser.yy.correlatedSubQuery = false;
   
break;
case 909: case 910: case 911: case 912:

     parser.addColRefToVariableIfExists($$[$0-2], $$[$0]);
     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 913: case 914: case 915: case 916: case 946: case 1004: case 1005:
this.$ = { types: [ 'BOOLEAN' ] };
break;
case 917:

     this.$ = { types: [ 'BOOLEAN' ] }
     parser.extractExpressionText(this.$, $$[$0-5], $$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 918:

     this.$ = { types: [ 'BOOLEAN' ] }
     parser.extractExpressionText(this.$, $$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 919: case 920:

     // verifyType($$[$0-2], 'BOOLEAN');
     // verifyType($$[$0], 'BOOLEAN');
     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 921: case 922: case 923:

     // verifyType($$[$0-2], 'NUMBER');
     // verifyType($$[$0], 'NUMBER');
     this.$ = { types: [ 'NUMBER' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 924:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 925:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 927:

     this.$ = $$[$0];
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 929:

     parser.suggestKeywords(['BETWEEN', 'EXISTS', 'IN', 'LIKE', 'REGEXP', 'RLIKE']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 930: case 932:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters };
break;
case 931:

     parser.suggestFunctions();
     parser.suggestColumns();
     parser.suggestKeywords(['EXISTS']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 933:

     parser.suggestFunctions({ types: [ 'BOOLEAN' ] });
     parser.suggestColumns({ types: [ 'BOOLEAN' ] });
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 934:
this.$ = { types: [ 'T' ], suggestFilters: $$[$0].suggestFilters };
break;
case 935:

     parser.suggestFunctions();
     parser.suggestColumns();
     this.$ = { types: [ 'T' ] };
   
break;
case 936:

     if (!$$[$0].typeSet) {
       parser.applyTypeToSuggestions({ types: ['NUMBER'] });
     }
     this.$ = { types: [ 'NUMBER' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 937:

     parser.suggestFunctions({ types: [ 'NUMBER' ] });
     parser.suggestColumns({ types: [ 'NUMBER' ] });
     this.$ = { types: [ 'NUMBER' ] };
   
break;
case 938:

     parser.suggestKeywords(['FALSE', 'NOT NULL', 'NOT TRUE', 'NOT FALSE', 'NULL', 'TRUE']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 939:

     parser.suggestKeywords(['FALSE', 'NULL', 'TRUE']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 940:

     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 941: case 942: case 943:

     parser.suggestKeywords(['NOT']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 944:

     parser.valueExpressionSuggest($$[$0-5], $$[$0-3] ? 'IS NOT DISTINCT FROM' : 'IS DISTINCT FROM');
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 945:

     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters }
   
break;
case 947:

     this.$ = $$[$0-1];
   
break;
case 948:

     parser.valueExpressionSuggest();
     this.$ = { types: ['T'], typeSet: true };
   
break;
case 949:

     parser.valueExpressionSuggest($$[$0], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 950: case 951: case 952:

     parser.valueExpressionSuggest($$[$0], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 953: case 954: case 955: case 956:

     if (!$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions($$[$0]);
       parser.addColRefIfExists($$[$0]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters }
   
break;
case 957: case 959:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 958:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ] , typeSet: true, endsWithLessThanOrEqual: true };
   
break;
case 960:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true, endsWithLessThanOrEqual: $$[$0-1] === '<='  };
   
break;
case 961: case 962: case 963: case 964:

     if (!$$[$0].typeSet) {
       parser.applyTypeToSuggestions($$[$0-2]);
       parser.addColRefIfExists($$[$0-2]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters }
   
break;
case 965:

     if ($$[$0].inValueEdit) {
       parser.valueExpressionSuggest($$[$0-3], $$[$0-2] + ' ' + $$[$0-1]);
       parser.applyTypeToSuggestions($$[$0-3]);
     }
     if ($$[$0].cursorAtStart) {
       parser.suggestKeywords(['SELECT']);
     }
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 966:

     if ($$[$0].inValueEdit) {
       parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
       parser.applyTypeToSuggestions($$[$0-2]);
     }
     if ($$[$0].cursorAtStart) {
       parser.suggestKeywords(['SELECT']);
     }
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 967: case 968:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-5].suggestFilters };
break;
case 969: case 970:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-4].suggestFilters };
break;
case 971:

     if ($$[$0-2].types[0] === $$[$0].types[0] && !$$[$0-5].typeSet) {
       parser.applyTypeToSuggestions($$[$0-2]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-5].suggestFilters };
   
break;
case 972:

     if ($$[$0-5].types[0] === $$[$0].types[0] && !$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions($$[$0-5]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters };
   
break;
case 973:

     if ($$[$0-5].types[0] === $$[$0-2].types[0] && !$$[$0].typeSet) {
       parser.applyTypeToSuggestions($$[$0-5]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 974:

     parser.valueExpressionSuggest($$[$0-5], $$[$0-1]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 975: case 981:

     parser.suggestValueExpressionKeywords($$[$0-1], ['AND']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 976:

     parser.valueExpressionSuggest($$[$0-3], $$[$0-2] + ' ' + $$[$0-1]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 977:

     if ($$[$0-4].types[0] === $$[$0-2].types[0] && !$$[$0-4].typeSet) {
       parser.applyTypeToSuggestions($$[$0-4])
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-4].suggestFilters };
   
break;
case 978:

     if ($$[$0-4].types[0] === $$[$0-2].types[0] && !$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions($$[$0-4])
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters };
   
break;
case 979:

     if ($$[$0-4].types[0] === $$[$0-2].types[0] && !$$[$0].typeSet) {
       parser.applyTypeToSuggestions($$[$0-4])
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 980:

     parser.valueExpressionSuggest($$[$0-4], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-4]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 982:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 983: case 985: case 987: case 989:

     parser.valueExpressionSuggest(undefined, $$[$0-1]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true, suggestFilters: true };
   
break;
case 984: case 988:

     parser.addColRefIfExists($$[$0]);
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters }
   
break;
case 986: case 990:

     parser.addColRefIfExists($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters }
   
break;
case 991: case 992:

     parser.valueExpressionSuggest(undefined, $$[$0-1]);
     parser.applyTypeToSuggestions({ types: [ 'NUMBER' ] });
     this.$ = { types: [ 'NUMBER' ], typeSet: true };
   
break;
case 993: case 994: case 995:

     if (!$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions({ types: ['NUMBER'] });
       parser.addColRefIfExists($$[$0]);
     }
     this.$ = { types: [ 'NUMBER' ], suggestFilters: $$[$0-2].suggestFilters }
   
break;
case 996: case 997: case 998:

     parser.valueExpressionSuggest(undefined, $$[$0-1]);
     parser.applyTypeToSuggestions({ types: ['NUMBER'] });
     this.$ = { types: [ 'NUMBER' ], typeSet: true };
   
break;
case 999: case 1000: case 1001:

     if (!$$[$0].typeSet) {
       parser.applyTypeToSuggestions({ types: ['NUMBER'] });
       parser.addColRefIfExists($$[$0-2]);
     }
     this.$ = { types: [ 'NUMBER' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 1002:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-1].suggestFilters };
break;
case 1003:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters };
break;
case 1006:

     parser.valueExpressionSuggest(undefined, $$[$0]);
     parser.applyTypeToSuggestions({ types: [ 'STRING' ] });
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 1007:

     parser.valueExpressionSuggest(undefined, $$[$0-1] + ' ' + $$[$0]);
     parser.applyTypeToSuggestions({ types: [ 'STRING' ] });
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 1009:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = { types: [ 'T' ], typeSet: true };
   
break;
case 1011:

     parser.suggestValueExpressionKeywords($$[$0-2], ['WHEN']);
     this.$ = { types: [ 'T' ], typeSet: true };
   
break;
case 1012:

      this.$ = $$[$0];
      this.$.suggestFilters = $$[$0-1].suggestFilters;
    
break;
case 1013:
this.$ = { types: [ 'T' ], suggestFilters: $$[$0-1].suggestFilters };
break;
case 1015: case 1017:

     $$[$0].position = 1;
   
break;
case 1016:

     $$[$0].position = $$[$0-2].position + 1;
     this.$ = $$[$0];
   
break;
case 1018:

     $$[$0-2].position += 1;
   
break;
case 1019:

     $$[$0-2].position = 1;
   
break;
case 1020:

     $$[$0-4].position += 1;
   
break;
case 1021:

     parser.valueExpressionSuggest();
     $$[$0-2].position += 1;
   
break;
case 1022:

     parser.valueExpressionSuggest();
     $$[$0-4].position += 1;
   
break;
case 1023:

     parser.suggestValueExpressionKeywords($$[$0-3]);
   
break;
case 1024: case 1025:

     parser.valueExpressionSuggest();
     this.$ = { cursorAtStart : true, position: 1 };
   
break;
case 1026: case 1027:

     parser.valueExpressionSuggest();
     this.$ = { position: 2 };
   
break;
case 1030:

     var lastLoc = parser.yy.locations[parser.yy.locations.length - 1];
     if (lastLoc.type !== 'variable') {
       lastLoc.type = 'column';
     }
     // used for function references with db prefix
     var firstLoc = parser.yy.locations[parser.yy.locations.length - $$[$0].length];
     this.$ = { chain: $$[$0], firstLoc: firstLoc, lastLoc: lastLoc }
   
break;
case 1037:

     parser.suggestValues($$[$0]);
   
break;
case 1038:
this.$ = { types: [ 'NUMBER' ], text: $$[$0] };
break;
case 1044: case 1046: case 1047:
this.$ = $$[$0-1] + $$[$0];
break;
case 1045: case 1048:
this.$ = $$[$0-2] + $$[$0-1] + $$[$0];
break;
case 1049:
this.$ = $$[$0-3] + $$[$0-2] + $$[$0-1] + $$[$0];
break;
case 1050:

     if (/\$\{[^}]*\}/.test($$[$0])) {
       parser.addVariableLocation(_$[$0], $$[$0]);
       this.$ = { types: [ 'STRING' ], columnReference: [{ name: $$[$0] }], text: "'" + $$[$0] + "'" }
     } else {
       this.$ = { types: [ 'STRING' ] }
     }
   
break;
case 1051:

     if (/\$\{[^}]*\}/.test($$[$0])) {
       parser.addVariableLocation(_$[$0], $$[$0]);
       this.$ = { types: [ 'STRING' ], columnReference: [{ name: $$[$0] }], text: '"' + $$[$0] + '"' }
     } else {
       this.$ = { types: [ 'STRING' ], text: '"' + $$[$0] + '"' }
     }
   
break;
case 1052:
this.$ = { types: [ 'BOOLEAN' ], text: $$[$0] };
break;
case 1053:

    this.$ = { partialQuote: '\'', missingEndQuote: parser.yy.missingEndQuote };
  
break;
case 1054:

    this.$ = { partialQuote: '"', missingEndQuote: parser.yy.missingEndQuote };
  
break;
case 1061:

     this.$ = $$[$0];

     if (parser.yy.latestTablePrimaries.length > 0) {
       var idx = parser.yy.latestTablePrimaries.length - 1;
       var tables = [];
       do {
         var tablePrimary = parser.yy.latestTablePrimaries[idx];
         if (!tablePrimary.subQueryAlias) {
           tables.unshift(tablePrimary.alias ? { identifierChain: tablePrimary.identifierChain, alias: tablePrimary.alias } : { identifierChain: tablePrimary.identifierChain })
         }
         idx--;
       } while (idx >= 0 && tablePrimary.join && !tablePrimary.subQueryAlias)

       if (tables.length > 0) {
         this.$.suggestJoins = {
           prependJoin: true,
           tables: tables
         };
       }
      }
   
break;
case 1068:

     this.$ = {
       primary: $$[$0-1]
     }
     if ($$[$0-1].identifierChain) {
       if ($$[$0]) {
         $$[$0-1].alias = $$[$0].alias
         parser.addTableAliasLocation($$[$0].location, $$[$0].alias, $$[$0-1].identifierChain);
       }
       parser.addTablePrimary($$[$0-1]);
     }

     var keywords = [];
     if (!$$[$0]) {
       keywords = ['AS'];
     } else if ($$[$0].suggestKeywords) {
       keywords = $$[$0].suggestKeywords;
     }
     if (keywords.length > 0) {
       this.$.suggestKeywords = keywords;
     }
   
break;
case 1069:

     this.$ = {
       primary: $$[$0-1]
     };

     if ($$[$0]) {
       this.$.primary.alias = $$[$0].alias;
       parser.addTablePrimary({ subQueryAlias: $$[$0].alias });
       parser.addSubqueryAliasLocation($$[$0].location, $$[$0].alias, $$[$0-1].identifierChain);
     }

     var keywords = [];
     if (!$$[$0]) {
       keywords = ['AS'];
     }
     if (keywords.length > 0) {
       this.$.suggestKeywords = keywords;
     }
   
break;
case 1070:

     if ($$[$0]) {
       parser.addTableAliasLocation($$[$0].location, $$[$0].alias, $$[$0-1].identifierChain);
     }
   
break;
case 1071:

     if ($$[$0]) {
       parser.addTablePrimary({ subQueryAlias: $$[$0].alias });
       parser.addSubqueryAliasLocation($$[$0].location, $$[$0].alias);
     }
   
break;
case 1081:

     parser.pushQueryState();
   
break;
case 1082:

     parser.popQueryState();
   
break;
case 1084:

     if ($$[$0-1]) {
       $$[$0-2].alias = $$[$0-1].alias;
       parser.addTablePrimary({ subQueryAlias: $$[$0-1].alias });
       parser.addSubqueryAliasLocation($$[$0-1].location, $$[$0-1].alias, $$[$0-2].identifierChain);
     }
     this.$ = $$[$0-2];
   
break;
case 1087:

     var subQuery = parser.getSubQuery($$[$0]);
     subQuery.columns.forEach(function (column) {
       parser.expandIdentifierChain({ wrapper: column });
       delete column.linked;
     });
     parser.popQueryState(subQuery);
     this.$ = subQuery;
   
break;
case 1104: case 1105: case 1106: case 1107:
this.$ = { alias: $$[$0], location: _$[$0] };
break;
case 1114: case 1115:

     if (parser.yy.result.suggestFunctions) {
       parser.suggestAggregateFunctions();
     }
   
break;
case 1116:

     if (!$$[$0-2] && !$$[$0-1]) {
       parser.suggestKeywords([{ value: 'PARTITION BY', weight: 2 }, { value: 'ORDER BY', weight: 1 }]);
     } else if (!$$[$0-2]) {
       parser.suggestKeywords(['PARTITION BY']);
     }
   
break;
case 1117:

      if (!$$[$0-1]) {
        parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'ORDER BY', weight: 2 }]);
      } else {
        parser.suggestValueExpressionKeywords($$[$0-3]);
      }
    
break;
case 1126:

      // Only allowed in last order by
      delete parser.yy.result.suggestAnalyticFunctions;
    
break;
case 1127:

      var keywords = [];
      if ($$[$0-2].suggestKeywords) {
        keywords = parser.createWeightedKeywords($$[$0-2].suggestKeywords, 2);
      }
      if (!$$[$0]) {
        keywords = keywords.concat([{ value: 'RANGE BETWEEN', weight: 1 }, { value: 'ROWS BETWEEN', weight: 1 }]);
      }
      parser.suggestKeywords(keywords);
    
break;
case 1133:

     parser.suggestKeywords(['BETWEEN']);
   
break;
case 1134:

     if (!$$[$0-2] && !$$[$0-1]) {
       parser.suggestKeywords(['CURRENT ROW', 'UNBOUNDED PRECEDING']);
     } else if (!$$[$0-1]) {
       parser.suggestKeywords(['AND']);
     }
   
break;
case 1139:

    lexer.popState();
  
break;
case 1140:

    lexer.begin('hdfs');
  
break;
case 1142:

      parser.suggestHdfs({ path: $$[$0-3] });
    
break;
case 1143:

     parser.suggestHdfs({ path: $$[$0-2] });
   
break;
case 1144:

      parser.suggestHdfs({ path: $$[$0-1] });
    
break;
case 1145:

     parser.suggestHdfs({ path: '' });
   
break;
case 1146:

      parser.suggestHdfs({ path: '' });
    
break;
case 1152:

     parser.suggestKeywords(['PRECEDING']);
   
break;
case 1153: case 1158:

     parser.suggestKeywords(['ROW']);
   
break;
case 1157:

     parser.suggestKeywords(['CURRENT ROW', 'UNBOUNDED FOLLOWING']);
   
break;
case 1159:

     parser.suggestKeywords(['FOLLOWING']);
   
break;
case 1163:
this.$ = { inValueEdit: true };
break;
case 1164:
this.$ = { inValueEdit: true, cursorAtStart: true };
break;
case 1165: case 1166: case 1167:

     this.$ = { suggestKeywords: ['NOT'] }
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 1171: case 1172: case 1173:

     parser.suggestFunctions({ types: [ 'STRING' ] });
     parser.suggestColumns({ types: [ 'STRING' ] });
     this.$ = { types: ['BOOLEAN'] }
   
break;
case 1174:

     this.$ = parser.findCaseType($$[$0-1])
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 1175:

     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
     parser.extractExpressionText(this.$, $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 1176:
this.$ = parser.findCaseType($$[$0-1]);
break;
case 1177:

     parser.suggestValueExpressionKeywords($$[$0-1], ['END']);
     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1178:

     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1179:
this.$ = parser.findCaseType($$[$0-2]);
break;
case 1180:

     if ($$[$0].toLowerCase() !== 'end') {
       parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'END', weight: 3 }, { value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     } else {
       parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     }
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1181:

     if ($$[$0].toLowerCase() !== 'end') {
       parser.suggestValueExpressionKeywords($$[$0-2], [{ value: 'END', weight: 3 }, { value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     } else {
       parser.suggestValueExpressionKeywords($$[$0-2], [{ value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     }
     this.$ = parser.findCaseType($$[$0-2]);
   
break;
case 1182:

     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
     this.$.suggestFilters = $$[$0-1].suggestFilters
   
break;
case 1183:

     parser.valueExpressionSuggest();
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1184:

     parser.valueExpressionSuggest();
     this.$ = { types: [ 'T' ], typeSet: true };
   
break;
case 1185:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = $$[$0-1];
   
break;
case 1186:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = { types: [ 'T' ] };
   
break;
case 1189:

     this.$ = { caseTypes: [ $$[$0] ], lastType: $$[$0] }
     parser.extractExpressionText(this.$, $$[$0]);
   
break;
case 1190:

     $$[$0-1].caseTypes.push($$[$0]);
     this.$ = { caseTypes: $$[$0-1].caseTypes, lastType: $$[$0] };
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 1194:

     parser.suggestValueExpressionKeywords($$[$0-2], ['WHEN']);
   
break;
case 1196:

     this.$ = $$[$0]
     parser.extractExpressionText(this.$, $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 1197:
this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: $$[$0].suggestFilters };
break;
case 1198:
this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: $$[$0-1].suggestFilters };
break;
case 1199:
this.$ = { caseTypes: [$$[$0]], suggestFilters: $$[$0-2].suggestFilters };
break;
case 1200: case 1201:
this.$ = { caseTypes: [$$[$0]], suggestFilters: $$[$0].suggestFilters };
break;
case 1202:

     parser.suggestKeywords(['WHEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1203:

     parser.suggestKeywords(['WHEN']);
     this.$ = { caseTypes: [$$[$0]] };
   
break;
case 1204:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1205:

      parser.valueExpressionSuggest();
      parser.suggestKeywords(['WHEN']);
      this.$ = { caseTypes: [{ types: ['T'] }] };
    
break;
case 1206: case 1208:

     parser.valueExpressionSuggest();
     this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: true };
   
break;
case 1207:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['THEN']);
     this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: true };
   
break;
case 1209:

     parser.valueExpressionSuggest();
     this.$ = { caseTypes: [$$[$0]], suggestFilters: true };
   
break;
case 1210:

     parser.suggestValueExpressionKeywords($$[$0-1], ['THEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1211:

     parser.suggestValueExpressionKeywords($$[$0-2], ['THEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1212: case 1213: case 1214: case 1215:

     parser.valueExpressionSuggest();
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
}
},
table: [o($V0,$V1,{338:1,263:2}),{1:[3]},o($V2,$V3,{339:3,343:4,19:5,155:6,44:7,20:8,21:9,22:10,23:11,24:12,25:13,26:14,27:15,28:16,29:17,34:19,35:20,156:21,157:22,168:23,169:24,36:25,42:26,158:31,4:$V4,8:$V5,12:$V6,16:$V7,162:$V8,174:$V9,241:$Va,271:$Vb,321:$Vc,337:$Vd}),{340:[1,37],344:[1,38]},o($V2,[2,627]),o($V2,[2,633]),o($V2,[2,634]),o($V2,[2,635]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),o($V2,[2,19]),o($V2,[2,20]),o($V2,[2,21]),o($V2,[2,22]),o($V2,[2,23]),o($V2,[2,24]),{30:[1,39],31:40,59:41,63:$Ve,113:$Vf,228:$Vg,347:44,348:$Vh,349:$Vi},o($V2,[2,27]),o($V2,[2,28]),o($V2,[2,244]),o($V2,[2,245]),{79:[1,49],169:48,241:$Va},o($Vj,$Vk,{170:50,258:51,260:52,262:$Vl}),{37:54,125:[1,55]},{43:[1,56]},{39:[1,59],47:[1,60],57:57,63:[1,58],365:$Vm,383:$Vn},{39:[1,65],47:[1,66],57:63,63:[1,64],365:$Vm,383:$Vn},{39:[1,67]},{59:68,63:$Ve,113:$Vf,228:$Vg,347:44,348:$Vh,349:$Vi},o($V2,[2,246]),{59:74,63:$Ve,113:$Vf,119:73,228:$Vg,322:69,328:70,330:71,347:44,348:$Vh,349:$Vi,358:$Vo,430:72},{59:74,63:$Ve,113:$Vf,119:78,175:76,177:77,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},o([54,55,63,79,95,96,107,112,113,228,253,267,269,270,271,294,295,296,297,298,299,300,301,302,303,304,306,307,348,349,351,352,355,358,362,370,389,390],$Vp,{242:79,30:$Vq,247:$Vr}),{39:[1,82],47:[1,83]},{163:[1,84]},{1:[2,622]},o($V0,$V1,{263:85}),o($V2,[2,25]),{32:[1,86],267:[1,87]},o($Vs,[2,471]),o($Vt,[2,645]),o($Vt,[2,646]),o($Vt,[2,647]),o($Vt,[2,642]),o($Vt,[2,643]),o($Vt,[2,644]),o($Vj,$Vk,{258:51,260:52,170:88,262:$Vl}),{44:89,168:23,169:24,174:$V9,241:$Va},o($Vj,[2,262]),o($Vj,[2,452],{260:90,262:$Vl}),o($Vu,[2,454]),o([30,241,247],$V1,{263:91}),o($V2,[2,29]),{79:[1,92]},{44:93,168:23,169:24,174:$V9,241:$Va},o($Vv,$Vw,{58:94,306:$Vx}),{59:96,63:$Ve,113:$Vf,228:$Vg,347:44,348:$Vh,349:$Vi},o($Vy,$Vw,{58:97,306:$Vx}),o($Vy,$Vw,{58:98,306:$Vx}),o($Vz,[2,761]),o($Vz,[2,762]),o($Vy,$VA,{150:99,306:$VB}),{59:101,63:$Ve,113:$Vf,228:$Vg,347:44,348:$Vh,349:$Vi},o($Vy,$VA,{150:102,306:$VB}),o($Vy,$VA,{150:103,306:$VB}),o($Vy,$VA,{150:104,306:$VB}),o($V2,[2,619]),{16:[1,105]},{16:[2,598]},{16:[2,600]},{16:[2,861],59:74,63:$Ve,113:$Vf,119:106,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},o($VC,[2,857],{267:[1,107]}),o($Vt,[2,854]),{56:[1,108],358:[1,109]},o([79,241],[2,271],{85:[1,110]}),o($VD,[2,273]),{43:[1,111]},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:114,227:144,228:$Vg,243:112,250:113,253:$VL,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($V81,[2,414]),o($V81,[2,415]),{40:170,59:74,63:$Ve,113:$Vf,119:171,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{40:172,59:74,63:$Ve,113:$Vf,119:171,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},o($Vy,[2,258],{164:173,39:[1,174]}),o($V2,$V3,{343:4,19:5,155:6,44:7,20:8,21:9,22:10,23:11,24:12,25:13,26:14,27:15,28:16,29:17,34:19,35:20,156:21,157:22,168:23,169:24,36:25,42:26,158:31,339:175,4:$V4,8:$V5,12:$V6,16:$V7,162:$V8,174:$V9,241:$Va,271:$Vb,321:$Vc,337:$Vd}),{33:176,51:179,54:$VE,55:$VF,59:177,63:$Ve,96:[1,182],113:$Vf,227:183,228:$Vg,267:$VM,268:178,269:[1,180],270:[1,181],347:44,348:$Vh,349:$Vi,352:[1,184],389:$V61,390:$V71,395:186,398:187,451:[1,185],456:150,457:151},{59:188,63:$Ve,113:$Vf,228:$Vg,347:44,348:$Vh,349:$Vi},o($Vj,[2,260]),{81:[1,189]},o($Vu,[2,455]),{30:$Vq,241:$Vp,242:190,247:$Vr},{59:74,63:$Ve,87:193,113:$Vf,119:146,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,412:191,428:192},o($V2,[2,37]),o($V2,[2,54],{347:44,59:194,63:$Ve,113:$Vf,228:$Vg,348:$Vh,349:$Vi}),{95:[1,195]},o($V2,[2,63]),{59:74,63:$Ve,64:196,66:197,72:198,113:$Vf,119:199,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{59:74,63:$Ve,72:200,113:$Vf,119:199,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{59:74,63:$Ve,113:$Vf,119:201,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{370:[1,202]},o($V2,[2,229]),{40:203,59:74,63:$Ve,113:$Vf,119:171,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{40:204,59:74,63:$Ve,113:$Vf,119:171,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{40:205,59:74,63:$Ve,113:$Vf,119:171,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{59:74,63:$Ve,87:138,113:$Vf,119:146,149:209,228:$Vg,323:206,332:207,334:208,347:44,348:$Vh,349:$Vi,358:$Vo,432:210},{16:[2,862]},{59:74,63:$Ve,113:$Vf,119:211,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{358:[1,212]},o($Vt,[2,856]),{59:74,63:$Ve,113:$Vf,119:78,177:213,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{79:[1,214]},o($Vu,[2,403],{244:215,181:217,85:[1,216],182:[1,218]}),o($V91,[2,420]),o($V91,$Va1,{347:44,59:74,395:186,398:187,252:219,443:233,119:234,51:235,32:$Vb1,43:$Vc1,54:$VE,55:$VF,63:$Ve,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,113:$Vf,142:$Vh1,228:$Vg,253:$Vi1,348:$Vh,349:$Vi,352:$Vj1,356:$Vk1,357:$Vl1,358:$Vo,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($V91,[2,436]),o($Vs1,[2,898]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:240,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:241,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:242,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:243,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{79:$Vt1,440:244},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:246,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:248,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,392:$Vu1,395:152,398:153,432:129,444:247,452:137,454:145,456:150,457:151,458:154,506:249,508:250},o($Vs1,[2,553],{310:252,79:$Vv1}),{79:$Vv1,310:254},o($Vs1,[2,551]),o($Vs1,[2,552]),o($Vs1,[2,554]),o($Vw1,[2,1030],{267:[1,255]}),{79:[2,533]},{79:[2,534]},{79:[2,535]},{79:[2,536]},o($Vs1,[2,582],{275:256,277:257,318:$Vx1}),{277:259,318:$Vx1},o($Vs1,[2,490]),o($Vs1,[2,1036]),o($Vy1,[2,868]),o($Vz1,[2,498]),o($Vz1,[2,499]),o($Vz1,[2,500]),{79:[1,260]},{79:[1,261]},o($Vs1,[2,1038]),o($Vs1,[2,1039]),o([32,43,50,54,55,63,77,79,81,85,95,107,108,109,112,113,129,142,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,253,262,264,267,340,344,348,349,352,356,357,358,359,360,361,363,366,367,368,369,371,374,375,376,377,379,380,382,384,385,386,387,388,391,392,442],[2,878]),{79:[1,262]},{79:[1,263]},{79:[1,264]},o($Vs1,[2,1041]),o($Vs1,[2,1042]),o($Vs1,[2,1050]),o($Vs1,[2,1051]),o($Vs1,[2,1052]),{79:[2,509]},{79:[2,510]},{79:[2,511]},{79:[2,512]},{79:[2,513]},{79:[2,514]},{79:[2,515]},{79:[2,516]},o($Vs1,[2,1043],{267:[1,265]}),{389:[1,266],390:[1,267]},{389:[1,268]},{54:[1,270],56:[1,269]},{55:[1,272],56:[1,271]},o($Vs1,[2,1055]),o($Vs1,[2,1056]),{125:[2,34]},o($VA1,[2,831],{267:[1,273]}),{43:[2,43]},{40:274,59:74,63:$Ve,113:$Vf,119:171,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},o($Vy,[2,259]),o($V2,[2,628]),o($V2,[2,26]),o($V2,[2,473]),o($V2,[2,474],{347:44,59:275,63:$Ve,113:$Vf,228:$Vg,348:$Vh,349:$Vi}),o($V2,[2,476]),o($V2,[2,477]),o($V2,[2,478]),o($V2,[2,479]),o($Vv,[2,1033]),{227:276,267:$VM,389:$V61,390:$V71,456:150,457:151},{227:277,267:$VM,389:$V61,390:$V71,456:150,457:151},o($VB1,[2,769]),o($VB1,[2,770]),o($Vs,[2,472]),o($Vj,$Vk,{258:51,260:52,170:278,262:$Vl}),{169:279,241:$Va},{81:[1,280],85:[1,281]},o($VC1,[2,843]),{32:[1,282]},o($V2,$VD1,{60:283,48:284,49:285,50:$VE1}),{370:[1,287]},o($V2,[2,64]),o($VF1,[2,160],{67:288,124:289,125:[1,290]}),o($VG1,[2,76],{73:291,76:292,77:[1,293],79:[1,294]}),o($VH1,[2,836],{267:[1,295]}),o($VI1,[2,212],{144:296,146:297,79:[1,298]}),o($V2,[2,777],{151:299,406:[1,300]}),o($Vy,[2,780]),o($V2,[2,236],{153:301,154:[1,302]}),o($V2,[2,238]),o($V2,[2,480]),o($VJ1,[2,615],{324:303,85:[1,304],182:[1,305]}),o($VK1,[2,602]),{32:[1,306]},{32:[2,612]},o($VL1,[2,865],{267:[1,307]}),o($VC,[2,858]),o($Vt,[2,855]),o($VD,[2,274]),o($VM1,$VN1,{179:308,469:309}),o($Vu,[2,404]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:114,227:144,228:$Vg,250:310,253:$VL,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VO1,$VP1,{248:311,255:312,257:313,264:$VQ1}),{40:322,59:74,63:$Ve,79:$Vt1,113:$Vf,119:171,183:315,186:316,207:318,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,440:323,459:317,461:319,463:320,464:321},o($V91,[2,435]),o($VR1,[2,1057],{439:324,95:[1,325]}),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:326,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:327,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:328,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:329,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{77:$Vd1,359:[1,331],374:[1,330],379:$Vq1,380:$Vr1,443:332},{79:[1,333]},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:334,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:335,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:336,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:337,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:338,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:339,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vs1,[2,924]),o($VS1,[2,1104]),o($VS1,[2,1105]),{51:341,54:$VE,55:$VF,59:74,63:$Ve,113:$Vf,119:340,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,395:186,398:187},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:342,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:343,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:344,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VT1,[2,899],{443:233,32:$Vb1,77:$Vd1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($VT1,[2,900],{443:233,32:$Vb1,77:$Vd1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($VT1,[2,901],{443:233,32:$Vb1,77:$Vd1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($VU1,[2,902],{443:233}),o($Vs1,[2,907]),o($VM1,$VN1,{469:309,440:323,179:345,464:346,79:$Vt1}),{32:$Vb1,77:$Vd1,81:[1,347],95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,443:233},o($Vs1,[2,926]),{32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,392:$Vu1,443:233,444:348,506:249,508:250},{368:[1,350],369:[1,349],392:$Vu1,508:351},o($VV1,[2,1189]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:352,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vs1,[2,549]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,81:[1,353],87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:355,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,292:354,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vs1,[2,550]),{59:74,63:$Ve,87:357,113:$Vf,119:146,228:$Vg,253:[1,356],347:44,348:$Vh,349:$Vi,358:$Vo},o($Vs1,[2,488]),o($Vs1,[2,583]),{59:74,63:$Ve,79:[1,360],113:$Vf,119:358,228:$Vg,319:359,347:44,348:$Vh,349:$Vi,358:$Vo},o($Vs1,[2,489]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,81:[1,361],87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:355,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,292:362,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,81:[1,364],87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:363,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o([54,55,63,79,81,95,96,107,112,113,228,267,269,270,271,294,295,296,297,298,299,300,301,302,303,304,306,307,348,349,351,352,355,358,362,370,389,390],$Vp,{242:365,30:$Vq,247:$Vr}),o($VW1,$Vp,{242:368,30:$Vq,81:[1,367],247:$Vr,253:[1,366]}),o($VW1,$Vp,{242:369,30:$Vq,81:[1,370],247:$Vr}),o($Vs1,[2,1044],{389:[1,371],390:[1,372]}),o($Vs1,[2,1046]),{389:[1,373]},o($Vs1,[2,1047]),{54:[1,374]},o($VX1,[2,764]),{55:[1,375]},o($VX1,[2,767]),{59:74,63:$Ve,113:$Vf,119:376,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{140:[1,377]},o($V2,[2,475]),o($Vv,[2,1034]),o($Vv,[2,1035]),o($Vj,[2,261]),o($Vu,[2,460]),o($V2,[2,794]),{59:74,63:$Ve,87:193,113:$Vf,119:146,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,428:378},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:379,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($V2,[2,55]),o($V2,[2,61]),o([43,81,85,109,340,344],[2,47]),{51:380,54:$VE,55:$VF,395:186,398:187},o([63,113,228,340,344,348,349,358],[2,784]),o($V2,[2,198],{68:381,43:[1,382]}),o($VF1,[2,161]),{126:[1,383]},o($VG1,[2,73]),o($VG1,[2,77]),{40:384,59:74,63:$Ve,113:$Vf,119:171,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{59:74,63:$Ve,80:385,84:386,87:387,113:$Vf,119:146,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{59:74,63:$Ve,113:$Vf,119:388,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{43:$VD1,48:389,49:285,50:$VE1},o($VI1,[2,213]),{59:74,63:$Ve,87:138,113:$Vf,119:146,147:390,149:391,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,432:210},o($V2,[2,222]),o($V2,[2,778]),o($V2,[2,230]),o($V2,[2,237]),o($V2,$VP1,{257:313,255:392,264:$VQ1}),{59:74,63:$Ve,87:138,113:$Vf,119:146,149:209,228:$Vg,332:393,334:208,347:44,348:$Vh,349:$Vi,358:$Vo,432:210},{40:322,59:74,63:$Ve,79:$Vt1,113:$Vf,119:171,186:394,207:318,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,440:323,459:317,461:319,463:320,464:321},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:396,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,335:395,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{59:74,63:$Ve,87:357,113:$Vf,119:146,228:$Vg,253:[1,397],347:44,348:$Vh,349:$Vi,358:$Vo},{81:[1,398]},{44:406,168:23,169:24,174:$V9,241:$Va,471:399,473:400,475:401,477:402,479:403,481:404,483:405},o($V91,[2,421]),o($Vu,[2,416]),o($VY1,[2,293],{188:407,189:408,190:[1,409]}),o($VO1,[2,465]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:411,227:144,228:$Vg,265:410,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o([81,190,201,226,232,262,264,340,344],[2,283],{85:[1,412]}),o($VZ1,[2,286]),o($VZ1,[2,1059]),o($VZ1,[2,1061],{204:413,206:414,214:$V_1,215:$V$1,216:$V02,217:$V12,218:$V22,219:$V32,220:$V42,221:$V52}),o($VZ1,[2,1062]),o($V62,$Va1,{347:44,59:74,395:186,398:187,119:234,51:235,252:423,43:$Vc1,54:$VE,55:$VF,63:$Ve,113:$Vf,228:$Vg,348:$Vh,349:$Vi,358:$Vo}),o($V62,$Va1,{347:44,59:74,395:186,398:187,119:234,51:235,252:424,43:$Vc1,54:$VE,55:$VF,63:$Ve,113:$Vf,228:$Vg,348:$Vh,349:$Vi,358:$Vo}),o($V72,[2,1073]),o($V72,[2,1075]),{96:[1,425],247:[1,428],269:[1,426],270:[1,427]},o($VR1,[2,1058]),o($V82,[2,909],{443:233,77:$Vd1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($V82,[2,910],{443:233,77:$Vd1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($V82,[2,911],{443:233,77:$Vd1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($V82,[2,912],{443:233,77:$Vd1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),{79:[1,429]},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:430,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vs1,[2,925]),o($VM1,$VN1,{347:44,59:74,308:116,309:124,305:125,273:126,311:127,432:129,274:134,276:135,278:136,452:137,87:138,285:139,286:140,287:141,227:144,454:145,119:146,291:147,456:150,457:151,395:152,398:153,458:154,469:309,179:431,441:432,138:433,54:$VE,55:$VF,63:$Ve,79:$VG,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,306:$V$,307:$V01,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71}),{32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,442:[1,434],443:233},o($V92,[2,919],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($V92,[2,920],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($VU1,[2,921],{443:233,77:$Vd1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($VU1,[2,922],{443:233,77:$Vd1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($VU1,[2,923],{443:233,77:$Vd1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($VS1,[2,1106]),o($VS1,[2,1107]),o($VU1,[2,1165],{443:233}),o($VU1,[2,1166],{443:233}),o($VU1,[2,1167],{443:233}),{81:[1,435]},{43:$Vc1,51:235,54:$VE,55:$VF,59:74,63:$Ve,81:$Va1,113:$Vf,119:234,228:$Vg,252:436,347:44,348:$Vh,349:$Vi,358:$Vo,395:186,398:187},o($Vs1,[2,908]),o($Vs1,[2,927]),o($Vs1,[2,1174]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:437,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VV1,[2,1190]),{32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,386:[1,438],443:233},o($Vs1,[2,564]),{81:[1,439],85:$Va2},o($VC1,[2,569],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($Vw1,[2,1031]),o($Vy1,[2,869]),o($Vs1,[2,585]),o($Vs1,[2,586]),o($Vb2,[2,1118],{485:441,489:442,125:[1,443]}),{318:[2,528]},{81:[1,444],85:$Va2},{32:$Vb1,43:[1,445],77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,443:233},o($Vs1,[2,538]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,81:[1,446],87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:355,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,292:447,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{81:[1,448]},o($Vz1,[2,518]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:355,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,292:449,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:450,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vz1,[2,524]),o($Vs1,[2,1045]),{389:[1,451]},o($Vs1,[2,1048]),o($VX1,[2,763]),o($VX1,[2,766]),o($VA1,[2,832]),{79:$Vc2,165:452,166:453},o($VC1,[2,844]),o($VC1,[2,849],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o([43,50,81,85,95,96,109,340,344],[2,48]),o($V2,[2,68]),o($VM1,[2,202],{143:455}),{127:456,129:[1,457]},o($VG1,[2,78]),{81:[1,458],85:[1,459]},o($VC1,[2,84]),{88:460,97:461,98:462,99:463,100:464,101:465,102:466,103:467,107:$Vd2,112:$Ve2,113:$Vf2,360:$Vg2,361:$Vh2,363:$Vi2,366:$Vj2,367:$Vk2,371:$Vl2,375:$Vm2,384:$Vn2,385:$Vo2,387:$Vp2,388:$Vq2,391:$Vr2},o($VH1,[2,837]),{43:[1,483]},{81:[1,484],85:[1,485]},o($VC1,$VD1,{49:285,48:486,50:$VE1}),o($V2,[2,588]),o($VK1,[2,603]),o($VJ1,[2,616]),o($VK1,[2,608]),o($VK1,[2,613],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($VL1,[2,866]),o($VD,[2,279]),{81:[2,1087]},{81:[2,1089]},{81:[2,1091]},{81:[2,1093]},{81:[2,1095]},{81:[2,1097]},{81:[2,1099]},{81:[2,1101]},o($Vs2,[2,322],{199:487,200:488,201:[1,489]}),o($VY1,[2,294]),{126:[1,490]},o($VO1,[2,466]),o($VO1,[2,469],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),{40:322,59:74,63:$Ve,79:$Vt1,113:$Vf,119:171,186:491,207:318,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,440:323,459:317,461:319,463:320,464:321},o($VZ1,[2,1065],{206:492,214:$V_1,215:$V$1,216:$V02,217:$V12,218:$V22,219:$V32,220:$V42,221:$V52}),{40:322,59:74,63:$Ve,79:$Vt1,113:$Vf,119:171,207:493,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,440:323,463:320,464:321},{215:[1,494]},{215:[1,495],217:[1,496]},{215:[1,497]},o($Vt2,[2,347]),{215:[1,499],217:[1,500],218:[1,498],220:[1,501]},{215:[1,502]},{215:[1,504],217:[1,505],218:[1,503],220:[1,506]},{215:[1,507]},o($V62,[2,1068]),o($V62,[2,1069]),o($Vs1,[2,903]),o($Vs1,[2,904]),o($Vs1,[2,905]),{182:[1,508]},o($VM1,$VN1,{347:44,59:74,308:116,309:124,305:125,273:126,311:127,432:129,274:134,276:135,278:136,452:137,87:138,285:139,286:140,287:141,227:144,454:145,119:146,291:147,456:150,457:151,395:152,398:153,458:154,469:309,138:433,179:509,441:510,54:$VE,55:$VF,63:$Ve,79:$VG,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,306:$V$,307:$V01,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71}),{32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,442:[1,511],443:233},{81:[1,512]},{81:[1,513],85:$Vu2},o($Vv2,[2,1015],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:515,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vw2,[2,1083]),{81:[1,516]},{32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,369:[1,517],374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,443:233},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:518,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vs1,[2,565]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:519,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{81:[2,1124],231:521,232:$Vx2,486:520},o($Vb2,[2,1119]),{126:[1,523]},{318:[2,529]},{97:524,360:$Vg2,361:$Vh2,363:$Vi2,366:$Vj2,367:$Vk2,371:$Vl2,375:$Vm2,384:$Vn2,385:$Vo2,387:$Vp2,388:$Vq2,391:$Vr2},o($Vz1,[2,504]),{81:[1,525],85:$Va2},o($Vz1,[2,517]),{81:[1,526],85:$Va2},{32:$Vb1,77:$Vd1,81:[1,527],95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,443:233},o($Vs1,[2,1049]),o($V2,[2,249],{85:[1,528]}),o($Vy2,[2,255]),{54:$VE,55:$VF,59:74,63:$Ve,87:138,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,167:529,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:530,309:124,311:127,347:44,348:$Vh,349:$Vi,358:$Vo,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{44:531,168:23,169:24,174:$V9,241:$Va},o($VF1,[2,162]),{79:[1,533],130:532},o($VG1,[2,82]),{59:74,63:$Ve,84:534,87:387,113:$Vf,119:146,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},o($VC1,[2,98],{89:535,92:536,93:537,49:540,50:$VE1,95:$Vz2,96:$VA2}),o($VB2,[2,110]),o($VB2,[2,111]),o($VB2,[2,112]),o($VB2,[2,113]),o($VB2,[2,114]),o($VB2,[2,115]),o($VB2,[2,116]),o($VB2,[2,881]),o($VB2,[2,882]),o($VB2,$VC2,{437:541,79:$VD2}),o($VB2,[2,895],{438:543,79:[1,544]}),o($VB2,[2,885]),o($VB2,[2,886]),o($VB2,[2,887]),o($VB2,[2,888]),o($VB2,[2,889]),o($VB2,[2,890]),o($VB2,[2,891]),o($VB2,$VC2,{437:545,79:$VD2}),{108:[1,546]},{108:[1,547]},{108:[1,548]},{44:549,168:23,169:24,174:$V9,241:$Va},o($VI1,[2,214]),{59:74,63:$Ve,87:138,113:$Vf,119:146,149:550,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,432:210},o($VC1,[2,216]),o($VE2,[2,385],{230:551,231:552,232:$Vx2}),o($Vs2,[2,323]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:553,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:555,191:554,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VZ1,[2,287]),{40:322,59:74,63:$Ve,79:$Vt1,113:$Vf,119:171,207:556,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,440:323,463:320,464:321},o($VF2,$VG2,{208:557,222:$VH2}),o($Vt2,[2,343]),o($Vt2,[2,344]),{215:[1,559]},o($Vt2,[2,346]),{215:[1,560]},o($Vt2,[2,349]),{215:[1,561]},{215:[1,562]},o($Vt2,[2,352]),{215:[1,563]},o($Vt2,[2,354]),{215:[1,564]},{215:[1,565]},o($Vt2,[2,357]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:566,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{81:[1,567]},{81:[1,568],85:$Vu2},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:569,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vs1,[2,915]),o($Vs1,[2,916]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:570,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o([43,54,55,63,81,85,113,129,182,190,201,214,215,216,217,218,219,220,221,226,228,232,239,240,262,264,340,344,348,349,356,358,359,368,369,377,382,386,392,442],[2,918],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($Vw2,[2,1084]),o($Vs1,[2,1175]),o($VV1,[2,1196],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($VC1,[2,570],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),{81:[1,571]},{81:[2,1129],129:[1,576],382:[1,575],490:572,492:573,493:574},{126:[1,577]},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:433,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,441:578,452:137,454:145,456:150,457:151,458:154},{81:[1,579]},o($Vz1,[2,505]),o($Vz1,[2,519]),o($Vz1,[2,523]),{79:$Vc2,166:580},{81:[1,581],85:[1,582]},o($VC1,[2,1028]),o($V2,[2,199]),{79:[1,584],131:583},{59:74,63:$Ve,87:586,113:$Vf,119:146,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo,424:585},o($VC1,[2,85]),o($VC1,[2,94]),o($VC1,[2,99],{49:540,93:587,50:$VE1,95:$Vz2,96:$VA2}),o($VI2,[2,100]),{96:[1,588]},o($VI2,[2,107]),o($VI2,[2,108]),o($VB2,[2,883]),{389:[1,589]},o($VB2,[2,884]),{389:[1,590]},o($VB2,[2,892]),{88:591,97:461,98:462,99:463,100:464,101:465,102:466,103:467,107:$Vd2,109:[1,592],112:$Ve2,113:$Vf2,360:$Vg2,361:$Vh2,363:$Vi2,366:$Vj2,367:$Vk2,371:$Vl2,375:$Vm2,384:$Vn2,385:$Vo2,387:$Vp2,388:$Vq2,391:$Vr2},{97:593,109:[1,594],360:$Vg2,361:$Vh2,363:$Vi2,366:$Vj2,367:$Vk2,371:$Vl2,375:$Vm2,384:$Vn2,385:$Vo2,387:$Vp2,388:$Vq2,391:$Vr2},{59:74,63:$Ve,109:[1,596],113:$Vf,114:595,116:597,119:598,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},o($V2,[2,203]),o($VC1,$VD1,{49:285,48:599,50:$VE1}),o($Vu,[2,378],{224:600,225:601,226:[1,602]}),o($VE2,[2,386]),o($Vs2,[2,324],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($VY1,[2,295],{85:[1,603]}),o($VJ2,[2,310],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($VF2,$VG2,{208:604,222:$VH2}),o($VF2,[2,330]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:605,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vt2,[2,345]),o($Vt2,[2,348]),o($Vt2,[2,350]),o($Vt2,[2,351]),o($Vt2,[2,353]),o($Vt2,[2,355]),o($Vt2,[2,356]),o($VU1,[2,906],{443:233}),o($Vs1,[2,913]),o($Vs1,[2,914]),o($VT1,[2,917],{443:233,32:$Vb1,77:$Vd1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,357:$Vl1,374:$Vn1,376:$Vo1,379:$Vq1,380:$Vr1}),o($Vv2,[2,1016],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($Vs1,[2,1113]),{81:[2,1125]},{81:[2,1130]},{359:[1,606],497:[1,607]},o($VK2,[2,1147]),o($VK2,[2,1148]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:610,227:144,228:$Vg,233:608,236:609,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($Vb2,[2,1120],{85:$Vu2}),o($Vs1,[2,537]),o($Vy2,[2,256]),o($Vy2,[2,257]),{54:$VE,55:$VF,59:74,63:$Ve,87:138,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:611,309:124,311:127,347:44,348:$Vh,349:$Vi,358:$Vo,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VF1,[2,166]),{125:$VL2,134:612,136:613},{81:[1,615],85:[1,616]},o($VC1,[2,824]),o($VI2,[2,101]),o($VI2,[2,106]),{81:[1,617]},{81:[1,618],85:[1,619]},{109:[1,620]},o($VB2,[2,121]),{85:[1,621]},o($VB2,[2,125]),{85:[1,623],109:[1,622]},o($VB2,[2,131]),o($VM2,[2,133]),{120:[1,624]},o($VC1,[2,217]),o($Vu,[2,440]),o($Vu,[2,379]),{227:625,228:[1,626],267:$VM,389:$V61,390:$V71,456:150,457:151},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:627,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VF2,[2,331]),o($VF2,[2,373],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($VN2,$VO2,{494:628}),o($VN2,$VO2,{494:629}),o([81,129,226,262,340,344,382],[2,387],{85:[1,630]}),o($VP2,[2,390]),o($VP2,[2,400],{443:233,238:631,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,239:[1,632],240:[1,633],253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($VC1,[2,1029]),{81:[1,634],85:[1,635]},o($VC1,[2,175]),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:636,140:[1,637],227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{79:[2,821]},{59:74,63:$Ve,87:638,113:$Vf,119:146,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},o($VB2,[2,894]),o($VB2,[2,896]),{389:[1,639]},o($VB2,[2,120]),{88:640,97:461,98:462,99:463,100:464,101:465,102:466,103:467,107:$Vd2,112:$Ve2,113:$Vf2,360:$Vg2,361:$Vh2,363:$Vi2,366:$Vj2,367:$Vk2,371:$Vl2,375:$Vm2,384:$Vn2,385:$Vo2,387:$Vp2,388:$Vq2,391:$Vr2},o($VB2,[2,130]),{59:74,63:$Ve,113:$Vf,116:641,119:598,228:$Vg,347:44,348:$Vh,349:$Vi,358:$Vo},{88:642,97:461,98:462,99:463,100:464,101:465,102:466,103:467,107:$Vd2,112:$Ve2,113:$Vf2,360:$Vg2,361:$Vh2,363:$Vi2,366:$Vj2,367:$Vk2,371:$Vl2,375:$Vm2,384:$Vn2,385:$Vo2,387:$Vp2,388:$Vq2,391:$Vr2},o($Vu,[2,380],{85:[1,643]}),o($Vu,[2,382],{85:[1,644]}),o($VJ2,[2,311],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),o($VQ2,$VR2,{495:645,505:646,364:$VS2,389:$VT2,497:$VU2}),o($VQ2,$VR2,{505:646,495:650,364:$VS2,389:$VT2,497:$VU2}),{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:610,227:144,228:$Vg,236:651,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VP2,[2,397]),o($VP2,[2,401]),o($VP2,[2,402]),o($VF1,[2,172]),{125:$VL2,136:652},{32:$Vb1,77:$Vd1,95:$Ve1,108:[1,654],109:$Vg1,139:653,142:[1,655],253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1,443:233},{108:$VV2,139:656,142:$VW2},o($VC1,[2,825]),{81:[1,659]},{109:[1,660]},o($VM2,[2,134]),o($VM2,$VD1,{49:285,48:661,50:$VE1}),{227:662,267:$VM,389:$V61,390:$V71,456:150,457:151},{228:[1,663]},{81:$VX2,356:$VY2,496:664},{378:[1,666]},{381:[1,667]},o($VZ2,[2,1160]),o($VZ2,[2,1161]),{81:$VX2,356:$VY2,496:668},o($VP2,[2,391]),o($VC1,[2,176]),{140:[1,669]},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:327,140:$V_2,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:329,140:$V$2,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:670,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},o($VW1,$V_2),o($VW1,$V$2),o($VB2,[2,897]),o($VB2,[2,124]),o($VM2,[2,140]),o($Vu,[2,381]),o($Vu,[2,383]),{81:[2,1131]},{364:[1,671],389:$VT2,497:$VU2,505:672},o($VQ2,[2,1150]),o($VQ2,[2,1151]),{81:[2,1132]},o($VC1,[2,184],{139:673,108:$VV2,142:$VW2}),o($VC1,[2,183],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1}),{381:[1,674]},{372:[1,675]},{54:$VE,55:$VF,59:74,63:$Ve,79:$VG,87:138,95:$VH,96:$VI,107:$VJ,112:$VK,113:$Vf,119:146,138:676,227:144,228:$Vg,267:$VM,269:$VN,270:$VO,271:$VP,273:126,274:134,276:135,278:136,285:139,286:140,287:141,291:147,294:$VQ,295:$VR,296:$VS,297:$VT,298:$VU,299:$VV,300:$VW,301:$VX,302:$VY,303:$VZ,304:$V_,305:125,306:$V$,307:$V01,308:116,309:124,311:127,347:44,348:$Vh,349:$Vi,351:$V11,352:$V21,355:$V31,358:$Vo,362:$V41,370:$V51,389:$V61,390:$V71,395:152,398:153,432:129,452:137,454:145,456:150,457:151,458:154},{81:[2,1155]},{81:[2,1156]},o($VC1,[2,182],{443:233,32:$Vb1,77:$Vd1,95:$Ve1,108:$Vf1,109:$Vg1,142:$Vh1,253:$Vi1,352:$Vj1,356:$Vk1,357:$Vl1,359:$Vm1,374:$Vn1,376:$Vo1,377:$Vp1,379:$Vq1,380:$Vr1})],
defaultActions: {37:[2,622],70:[2,598],71:[2,600],106:[2,862],130:[2,533],131:[2,534],132:[2,535],133:[2,536],155:[2,509],156:[2,510],157:[2,511],158:[2,512],159:[2,513],160:[2,514],161:[2,515],162:[2,516],170:[2,34],172:[2,43],209:[2,612],361:[2,528],399:[2,1087],400:[2,1089],401:[2,1091],402:[2,1093],403:[2,1095],404:[2,1097],405:[2,1099],406:[2,1101],444:[2,529],572:[2,1125],573:[2,1130],615:[2,821],664:[2,1131],668:[2,1132],674:[2,1155],675:[2,1156]},
parseError: function parseError (str, hash) {
    if (hash.recoverable) {
        this.trace(str);
    } else {
        var error = new Error(str);
        error.hash = hash;
        throw error;
    }
},
/**
 * @param {string} input
 *
 * @return {AutocompleteParseResult}
 */
parse: function parse (input) {
    var self = this,
        stack = [0],
        tstack = [], // token stack
        vstack = [null], // semantic value stack
        lstack = [], // location stack
        table = this.table,
        yytext = '',
        yylineno = 0,
        yyleng = 0,
        recovering = 0,
        TERROR = 2,
        EOF = 1;

    var args = lstack.slice.call(arguments, 1);

    //this.reductionCount = this.shiftCount = 0;

    var lexer = Object.create(this.lexer);
    var sharedState = { yy: {} };
    // copy state
    for (var k in this.yy) {
      if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
        sharedState.yy[k] = this.yy[k];
      }
    }

    lexer.setInput(input, sharedState.yy);
    sharedState.yy.lexer = lexer;
    sharedState.yy.parser = this;
    if (typeof lexer.yylloc == 'undefined') {
        lexer.yylloc = {};
    }
    var yyloc = lexer.yylloc;
    lstack.push(yyloc);

    var ranges = lexer.options && lexer.options.ranges;

    if (typeof sharedState.yy.parseError === 'function') {
        this.parseError = sharedState.yy.parseError;
    } else {
        this.parseError = Object.getPrototypeOf(this).parseError;
    }

    function popStack (n) {
        stack.length = stack.length - 2 * n;
        vstack.length = vstack.length - n;
        lstack.length = lstack.length - n;
    }

_token_stack:
    var lex = function () {
        var token;
        token = lexer.lex() || EOF;
        // if token isn't its numeric value, convert
        if (typeof token !== 'number') {
            token = self.symbols_[token] || token;
        }
        return token;
    }

    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
    while (true) {
        // retreive state number from top of stack
        state = stack[stack.length - 1];

        // use default actions if available
        if (this.defaultActions[state]) {
            action = this.defaultActions[state];
        } else {
            if (symbol === null || typeof symbol == 'undefined') {
                symbol = lex();
            }
            // read action for current state and first input
            action = table[state] && table[state][symbol];
        }

_handle_error:
        // handle parse error
        if (typeof action === 'undefined' || !action.length || !action[0]) {
            var error_rule_depth;
            var errStr = '';

            // Return the rule stack depth where the nearest error rule can be found.
            // Return FALSE when no error recovery rule was found.
            function locateNearestErrorRecoveryRule(state) {
                var stack_probe = stack.length - 1;
                var depth = 0;

                // try to recover from error
                for(;;) {
                    // check for error recovery rule in this state
                    if ((TERROR.toString()) in table[state]) {
                        return depth;
                    }
                    if (state === 0 || stack_probe < 2) {
                        return false; // No suitable error recovery rule available.
                    }
                    stack_probe -= 2; // popStack(1): [symbol, action]
                    state = stack[stack_probe];
                    ++depth;
                }
            }

            if (!recovering) {
                // first see if there's any chance at hitting an error recovery rule:
                error_rule_depth = locateNearestErrorRecoveryRule(state);

                // Report error
                expected = [];
                for (p in table[state]) {
                    if (this.terminals_[p] && p > TERROR) {
                        expected.push("'"+this.terminals_[p]+"'");
                    }
                }
                if (lexer.showPosition) {
                    errStr = 'Parse error on line '+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
                } else {
                    errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
                                  (symbol == EOF ? "end of input" :
                                              ("'"+(this.terminals_[symbol] || symbol)+"'"));
                }
                this.parseError(errStr, {
                    text: lexer.match,
                    token: this.terminals_[symbol] || symbol,
                    line: lexer.yylineno,
                    loc: lexer.yylloc,
                    ruleId: stack.slice(stack.length - 2, stack.length).join('_'),
                    expected: expected,
                    recoverable: (error_rule_depth !== false)
                });
            } else if (preErrorSymbol !== EOF) {
                error_rule_depth = locateNearestErrorRecoveryRule(state);
            }

            // just recovered from another error
            if (recovering == 3) {
                if (symbol === EOF || preErrorSymbol === EOF) {
                    throw new Error(errStr || 'Parsing halted while starting to recover from another error.');
                }

                // discard current lookahead and grab another
                yyleng = lexer.yyleng;
                yytext = lexer.yytext;
                yylineno = lexer.yylineno;
                yyloc = lexer.yylloc;
                symbol = lex();
            }

            // try to recover from error
            if (error_rule_depth === false) {
                throw new Error(errStr || 'Parsing halted. No suitable error recovery rule available.');
            }
            popStack(error_rule_depth);

            preErrorSymbol = (symbol == TERROR ? null : symbol); // save the lookahead token
            symbol = TERROR;         // insert generic error symbol as new lookahead
            state = stack[stack.length-1];
            action = table[state] && table[state][TERROR];
            recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
        }

        // this shouldn't happen, unless resolve defaults are off
        if (action[0] instanceof Array && action.length > 1) {
            throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
        }

        switch (action[0]) {
            case 1: // shift
                //this.shiftCount++;

                stack.push(symbol);
                vstack.push(lexer.yytext);
                lstack.push(lexer.yylloc);
                stack.push(action[1]); // push state
                symbol = null;
                if (!preErrorSymbol) { // normal execution/no error
                    yyleng = lexer.yyleng;
                    yytext = lexer.yytext;
                    yylineno = lexer.yylineno;
                    yyloc = lexer.yylloc;
                    if (recovering > 0) {
                        recovering--;
                    }
                } else {
                    // error just occurred, resume old lookahead f/ before error
                    symbol = preErrorSymbol;
                    preErrorSymbol = null;
                }
                break;

            case 2:
                // reduce
                //this.reductionCount++;

                len = this.productions_[action[1]][1];

                // perform semantic action
                yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
                // default location, uses first token for firsts, last for lasts
                yyval._$ = {
                    first_line: lstack[lstack.length-(len||1)].first_line,
                    last_line: lstack[lstack.length-1].last_line,
                    first_column: lstack[lstack.length-(len||1)].first_column,
                    last_column: lstack[lstack.length-1].last_column
                };
                if (ranges) {
                  yyval._$.range = [lstack[lstack.length-(len||1)].range[0], lstack[lstack.length-1].range[1]];
                }
                r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));

                if (typeof r !== 'undefined') {
                    return r;
                }

                // pop off stack
                if (len) {
                    stack = stack.slice(0,-1*len*2);
                    vstack = vstack.slice(0, -1*len);
                    lstack = lstack.slice(0, -1*len);
                }

                stack.push(this.productions_[action[1]][0]);    // push nonterminal (reduce)
                vstack.push(yyval.$);
                lstack.push(yyval._$);
                // goto new state = table[STATE][NONTERMINAL]
                newState = table[stack[stack.length-2]][stack[stack.length-1]];
                stack.push(newState);
                break;

            case 3:
                // accept
                return true;
        }

    }

    return true;
}};


SqlParseSupport.initSyntaxParser(parser);/* generated by jison-lex 0.3.4 */
var lexer = (function(){
var lexer = ({

EOF:1,

parseError:function parseError(str, hash) {
        if (this.yy.parser) {
            this.yy.parser.parseError(str, hash);
        } else {
            throw new Error(str);
        }
    },

// resets the lexer, sets new input
setInput:function (input, yy) {
        this.yy = yy || this.yy || {};
        this._input = input;
        this._more = this._backtrack = this.done = false;
        this.yylineno = this.yyleng = 0;
        this.yytext = this.matched = this.match = '';
        this.conditionStack = ['INITIAL'];
        this.yylloc = {
            first_line: 1,
            first_column: 0,
            last_line: 1,
            last_column: 0
        };
        if (this.options.ranges) {
            this.yylloc.range = [0,0];
        }
        this.offset = 0;
        return this;
    },

// consumes and returns one char from the input
input:function () {
        var ch = this._input[0];
        this.yytext += ch;
        this.yyleng++;
        this.offset++;
        this.match += ch;
        this.matched += ch;
        var lines = ch.match(/(?:\r\n?|\n).*/g);
        if (lines) {
            this.yylineno++;
            this.yylloc.last_line++;
        } else {
            this.yylloc.last_column++;
        }
        if (this.options.ranges) {
            this.yylloc.range[1]++;
        }

        this._input = this._input.slice(1);
        return ch;
    },

// unshifts one char (or a string) into the input
unput:function (ch) {
        var len = ch.length;
        var lines = ch.split(/(?:\r\n?|\n)/g);

        this._input = ch + this._input;
        this.yytext = this.yytext.substr(0, this.yytext.length - len);
        //this.yyleng -= len;
        this.offset -= len;
        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
        this.match = this.match.substr(0, this.match.length - 1);
        this.matched = this.matched.substr(0, this.matched.length - 1);

        if (lines.length - 1) {
            this.yylineno -= lines.length - 1;
        }
        var r = this.yylloc.range;

        this.yylloc = {
            first_line: this.yylloc.first_line,
            last_line: this.yylineno + 1,
            first_column: this.yylloc.first_column,
            last_column: lines ?
                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
              this.yylloc.first_column - len
        };

        if (this.options.ranges) {
            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
        }
        this.yyleng = this.yytext.length;
        return this;
    },

// When called from action, caches matched text and appends it on next action
more:function () {
        this._more = true;
        return this;
    },

// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
reject:function () {
        if (this.options.backtrack_lexer) {
            this._backtrack = true;
        } else {
            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                text: "",
                token: null,
                line: this.yylineno
            });

        }
        return this;
    },

// retain first n characters of the match
less:function (n) {
        this.unput(this.match.slice(n));
    },

// displays already matched input, i.e. for error messages
pastInput:function () {
        var past = this.matched.substr(0, this.matched.length - this.match.length);
        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
    },

// displays upcoming input, i.e. for error messages
upcomingInput:function () {
        var next = this.match;
        if (next.length < 20) {
            next += this._input.substr(0, 20-next.length);
        }
        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
    },

// displays the character position where the lexing error occurred, i.e. for error messages
showPosition:function () {
        var pre = this.pastInput();
        var c = new Array(pre.length + 1).join("-");
        return pre + this.upcomingInput() + "\n" + c + "^";
    },

// test the lexed token: return FALSE when not a match, otherwise return token
test_match:function(match, indexed_rule) {
        var token,
            lines,
            backup;

        if (this.options.backtrack_lexer) {
            // save context
            backup = {
                yylineno: this.yylineno,
                yylloc: {
                    first_line: this.yylloc.first_line,
                    last_line: this.last_line,
                    first_column: this.yylloc.first_column,
                    last_column: this.yylloc.last_column
                },
                yytext: this.yytext,
                match: this.match,
                matches: this.matches,
                matched: this.matched,
                yyleng: this.yyleng,
                offset: this.offset,
                _more: this._more,
                _input: this._input,
                yy: this.yy,
                conditionStack: this.conditionStack.slice(0),
                done: this.done
            };
            if (this.options.ranges) {
                backup.yylloc.range = this.yylloc.range.slice(0);
            }
        }

        lines = match[0].match(/(?:\r\n?|\n).*/g);
        if (lines) {
            this.yylineno += lines.length;
        }
        this.yylloc = {
            first_line: this.yylloc.last_line,
            last_line: this.yylineno + 1,
            first_column: this.yylloc.last_column,
            last_column: lines ?
                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
                         this.yylloc.last_column + match[0].length
        };
        this.yytext += match[0];
        this.match += match[0];
        this.matches = match;
        this.yyleng = this.yytext.length;
        if (this.options.ranges) {
            this.yylloc.range = [this.offset, this.offset += this.yyleng];
        }
        this._more = false;
        this._backtrack = false;
        this._input = this._input.slice(match[0].length);
        this.matched += match[0];
        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
        if (this.done && this._input) {
            this.done = false;
        }
        if (token) {
            return token;
        } else if (this._backtrack) {
            // recover context
            for (var k in backup) {
                this[k] = backup[k];
            }
            return false; // rule action called reject() implying the next rule should be tested instead.
        }
        return false;
    },

// return next match in input
next:function () {
        if (this.done) {
            return this.EOF;
        }
        if (!this._input) {
            this.done = true;
        }

        var token,
            match,
            tempMatch,
            index;
        if (!this._more) {
            this.yytext = '';
            this.match = '';
        }
        var rules = this._currentRules();
        for (var i = 0; i < rules.length; i++) {
            tempMatch = this._input.match(this.rules[rules[i]]);
            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                match = tempMatch;
                index = i;
                if (this.options.backtrack_lexer) {
                    token = this.test_match(tempMatch, rules[i]);
                    if (token !== false) {
                        return token;
                    } else if (this._backtrack) {
                        match = false;
                        continue; // rule action called reject() implying a rule MISmatch.
                    } else {
                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                        return false;
                    }
                } else if (!this.options.flex) {
                    break;
                }
            }
        }
        if (match) {
            token = this.test_match(match, rules[index]);
            if (token !== false) {
                return token;
            }
            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
            return false;
        }
        if (this._input === "") {
            return this.EOF;
        } else {
            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                text: "",
                token: null,
                line: this.yylineno
            });
        }
    },

// return next match that has a token
lex:function lex () {
        var r = this.next();
        if (r) {
            return r;
        } else {
            return this.lex();
        }
    },

// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
begin:function begin (condition) {
        this.conditionStack.push(condition);
    },

// pop the previously active lexer condition state off the condition stack
popState:function popState () {
        var n = this.conditionStack.length - 1;
        if (n > 0) {
            return this.conditionStack.pop();
        } else {
            return this.conditionStack[0];
        }
    },

// produce the lexer rule set which is active for the currently active lexer condition state
_currentRules:function _currentRules () {
        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
        } else {
            return this.conditions["INITIAL"].rules;
        }
    },

// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
topState:function topState (n) {
        n = this.conditionStack.length - 1 - Math.abs(n || 0);
        if (n >= 0) {
            return this.conditionStack[n];
        } else {
            return "INITIAL";
        }
    },

// alias for begin(condition)
pushState:function pushState (condition) {
        this.begin(condition);
    },

// return the number of states currently on the stack
stateStackSize:function stateStackSize() {
        return this.conditionStack.length;
    },
options: {"case-insensitive":true,"flex":true},
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
var YYSTATE=YY_START;
switch($avoiding_name_collisions) {
case 0: /* skip whitespace */ 
break;
case 1: /* skip comments */ 
break;
case 2: /* skip comments */ 
break;
case 3: parser.yy.partialCursor = false; parser.yy.cursorFound = yy_.yylloc; return 5; 
break;
case 4: parser.yy.partialCursor = true; parser.yy.cursorFound = yy_.yylloc; return 393; 
break;
case 5: this.popState(); return 442; 
break;
case 6: return 30; 
break;
case 7: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('ALTER', yy_.yylloc, yy.lexer.upcomingInput()); return 4; 
break;
case 8: return 356; 
break;
case 9: return 43; 
break;
case 10: return 239; 
break;
case 11: this.begin('between'); return 359; 
break;
case 12: return 360; 
break;
case 13: return 361; 
break;
case 14: return 126; 
break;
case 15: return 406; 
break;
case 16: return 362; 
break;
case 17: return 363; 
break;
case 18: return 50; 
break;
case 19: parser.determineCase(yy_.yytext); return 8; 
break;
case 20: return 214; 
break;
case 21: return 364; 
break;
case 22: return 365; 
break;
case 23: return 366; 
break;
case 24: return 240; 
break;
case 25: return 247; 
break;
case 26: return 357; 
break;
case 27: return 367; 
break;
case 28: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('DROP', yy_.yylloc, yy.lexer.upcomingInput()); return 12; 
break;
case 29: return 368; 
break;
case 30: return 369; 
break;
case 31: parser.yy.correlatedSubQuery = true; return 370; 
break;
case 32: return 270; 
break;
case 33: return 371; 
break;
case 34: return 372; 
break;
case 35: parser.determineCase(yy_.yytext); return 182; 
break;
case 36: return 216; 
break;
case 37: return 190; 
break;
case 38: return 201; 
break;
case 39: return 306; 
break;
case 40: return 374; 
break;
case 41: return 218; 
break;
case 42: return 162; 
break;
case 43: return 375; 
break;
case 44: return 163; 
break;
case 45: return 376; 
break;
case 46: return 215; 
break;
case 47: return 219; 
break;
case 48: return 77; 
break;
case 49: return 226; 
break;
case 50: return 95; 
break;
case 51: return 96; 
break;
case 52: return 222; 
break;
case 53: return 348; 
break;
case 54: return 377; 
break;
case 55: return 232; 
break;
case 56: return 217; 
break;
case 57: return 125; 
break;
case 58: return 378; 
break;
case 59: return 154; 
break;
case 60: return 129; 
break;
case 61: return 379; 
break;
case 62: return 221; 
break;
case 63: return 380; 
break;
case 64: return 381; 
break;
case 65: return 63; 
break;
case 66: return 382; 
break;
case 67: return 383; 
break;
case 68: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('SELECT', yy_.yylloc); return 241; 
break;
case 69: return 220; 
break;
case 70: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('SET', yy_.yylloc); return 16; 
break;
case 71: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('SHOW', yy_.yylloc); return 'SHOW'; 
break;
case 72: return 384; 
break;
case 73: return 385; 
break;
case 74: return 39; 
break;
case 75: return 386; 
break;
case 76: return 387; 
break;
case 77: return 388; 
break;
case 78: return 'TO'; 
break;
case 79: return 269; 
break;
case 80: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('TRUNCATE', yy_.yylloc, yy.lexer.upcomingInput()); return 271; 
break;
case 81: return 497; 
break;
case 82: return 262; 
break;
case 83: parser.determineCase(yy_.yytext); return 321; 
break;
case 84: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('USE', yy_.yylloc); return 337; 
break;
case 85: return 140; 
break;
case 86: return 391; 
break;
case 87: return 47; 
break;
case 88: return 392; 
break;
case 89: return 264; 
break;
case 90: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('WITH', yy_.yylloc); return 174; 
break;
case 91: return 318; 
break;
case 92: return 63; 
break;
case 93: yy.lexer.unput('('); yy_.yytext = 'avg'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 294; 
break;
case 94: yy.lexer.unput('('); yy_.yytext = 'cast'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 307; 
break;
case 95: yy.lexer.unput('('); yy_.yytext = 'count'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 302; 
break;
case 96: yy.lexer.unput('('); yy_.yytext = 'max'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 295; 
break;
case 97: yy.lexer.unput('('); yy_.yytext = 'min'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 296; 
break;
case 98: yy.lexer.unput('('); yy_.yytext = 'stddev_pop'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 297; 
break;
case 99: yy.lexer.unput('('); yy_.yytext = 'stddev_samp'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 298; 
break;
case 100: yy.lexer.unput('('); yy_.yytext = 'sum'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 303; 
break;
case 101: yy.lexer.unput('('); yy_.yytext = 'var_pop'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 299; 
break;
case 102: yy.lexer.unput('('); yy_.yytext = 'var_samp'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 300; 
break;
case 103: yy.lexer.unput('('); yy_.yytext = 'variance'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 301; 
break;
case 104: yy.lexer.unput('('); yy_.yytext = 'cume_dist'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 105: yy.lexer.unput('('); yy_.yytext = 'dense_rank'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 106: yy.lexer.unput('('); yy_.yytext = 'first_value'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 107: yy.lexer.unput('('); yy_.yytext = 'lag'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 108: yy.lexer.unput('('); yy_.yytext = 'last_value'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 109: yy.lexer.unput('('); yy_.yytext = 'lead'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 110: yy.lexer.unput('('); yy_.yytext = 'rank'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 111: yy.lexer.unput('('); yy_.yytext = 'row_number'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 304; 
break;
case 112: return 389; 
break;
case 113: return 389; 
break;
case 114: return 390; 
break;
case 115: return 349; 
break;
case 116: parser.yy.cursorFound = true; return 5; 
break;
case 117: parser.yy.cursorFound = true; return 393; 
break;
case 118: return 373; 
break;
case 119: parser.addFileLocation(yy_.yylloc, yy_.yytext); return 502; 
break;
case 120: this.popState(); return 503; 
break;
case 121: return 340; 
break;
case 122: return 356; 
break;
case 123: return 377; 
break;
case 124: return 32; 
break;
case 125: return 108; 
break;
case 126: return 109; 
break;
case 127: return 142; 
break;
case 128: return 142; 
break;
case 129: return 142; 
break;
case 130: return 142; 
break;
case 131: return 142; 
break;
case 132: return 352; 
break;
case 133: return 253; 
break;
case 134: return 357; 
break;
case 135: return 357; 
break;
case 136: return 357; 
break;
case 137: return 357; 
break;
case 138: return 357; 
break;
case 139: return 357; 
break;
case 140: return 85; 
break;
case 141: return 267; 
break;
case 142: return 120; 
break;
case 143: return 344; 
break;
case 144: return 355; 
break;
case 145: return 351; 
break;
case 146: return 79; 
break;
case 147: return 81; 
break;
case 148: return 353; 
break;
case 149: return 354; 
break;
case 150: return 228; 
break;
case 151: this.begin('backtickedValue'); return 358; 
break;
case 152:
                                             if (parser.handleQuotedValueWithCursor(this, yy_.yytext, yy_.yylloc, '`')) {
                                               return 397;
                                             }
                                             return 56;
                                           
break;
case 153: this.popState(); return 358; 
break;
case 154: this.begin('singleQuotedValue'); return 54; 
break;
case 155:
                                             if (parser.handleQuotedValueWithCursor(this, yy_.yytext, yy_.yylloc, '\'')) {
                                               return 397;
                                             }
                                             return 56;
                                           
break;
case 156: this.popState(); return 54; 
break;
case 157: this.begin('doubleQuotedValue'); return 55; 
break;
case 158:
                                             if (parser.handleQuotedValueWithCursor(this, yy_.yytext, yy_.yylloc, '"')) {
                                               return 397;
                                             }
                                             return 56;
                                           
break;
case 159: this.popState(); return 55; 
break;
case 160: return 340; 
break;
case 161: /* To prevent console logging of unknown chars */ 
break;
case 162: 
break;
case 163: 
break;
case 164: 
break;
case 165: 
break;
case 166: 
break;
case 167:console.log(yy_.yytext);
break;
}
},
rules: [/^(?:\s)/i,/^(?:--.*)/i,/^(?:[/][*][^*]*[*]+([^/*][^*]*[*]+)*[/])/i,/^(?:\u2020)/i,/^(?:\u2021)/i,/^(?:AND)/i,/^(?:ALL)/i,/^(?:ALTER)/i,/^(?:AND)/i,/^(?:AS)/i,/^(?:ASC)/i,/^(?:BETWEEN)/i,/^(?:BIGINT)/i,/^(?:BOOLEAN)/i,/^(?:BY)/i,/^(?:CASCADE)/i,/^(?:CASE)/i,/^(?:CHAR)/i,/^(?:COMMENT)/i,/^(?:CREATE)/i,/^(?:CROSS)/i,/^(?:CURRENT)/i,/^(?:DATABASE)/i,/^(?:DECIMAL)/i,/^(?:DESC)/i,/^(?:DISTINCT)/i,/^(?:DIV)/i,/^(?:DOUBLE)/i,/^(?:DROP)/i,/^(?:ELSE)/i,/^(?:END)/i,/^(?:EXISTS)/i,/^(?:FALSE)/i,/^(?:FLOAT)/i,/^(?:FOLLOWING)/i,/^(?:FROM)/i,/^(?:FULL)/i,/^(?:GROUP)/i,/^(?:HAVING)/i,/^(?:IF)/i,/^(?:IN)/i,/^(?:INNER)/i,/^(?:INSERT)/i,/^(?:INT)/i,/^(?:INTO)/i,/^(?:IS)/i,/^(?:JOIN)/i,/^(?:LEFT)/i,/^(?:LIKE)/i,/^(?:LIMIT)/i,/^(?:NOT)/i,/^(?:NULL)/i,/^(?:ON)/i,/^(?:OPTION)/i,/^(?:OR)/i,/^(?:ORDER)/i,/^(?:OUTER)/i,/^(?:PARTITION)/i,/^(?:PRECEDING)/i,/^(?:PURGE)/i,/^(?:RANGE)/i,/^(?:REGEXP)/i,/^(?:RIGHT)/i,/^(?:RLIKE)/i,/^(?:ROW)/i,/^(?:ROLE)/i,/^(?:ROWS)/i,/^(?:SCHEMA)/i,/^(?:SELECT)/i,/^(?:SEMI)/i,/^(?:SET)/i,/^(?:SHOW)/i,/^(?:SMALLINT)/i,/^(?:STRING)/i,/^(?:TABLE)/i,/^(?:THEN)/i,/^(?:TIMESTAMP)/i,/^(?:TINYINT)/i,/^(?:TO)/i,/^(?:TRUE)/i,/^(?:TRUNCATE)/i,/^(?:UNBOUNDED)/i,/^(?:UNION)/i,/^(?:UPDATE)/i,/^(?:USE)/i,/^(?:VALUES)/i,/^(?:VARCHAR)/i,/^(?:VIEW)/i,/^(?:WHEN)/i,/^(?:WHERE)/i,/^(?:WITH)/i,/^(?:OVER)/i,/^(?:ROLE)/i,/^(?:AVG\s*\()/i,/^(?:CAST\s*\()/i,/^(?:COUNT\s*\()/i,/^(?:MAX\s*\()/i,/^(?:MIN\s*\()/i,/^(?:STDDEV_POP\s*\()/i,/^(?:STDDEV_SAMP\s*\()/i,/^(?:SUM\s*\()/i,/^(?:VAR_POP\s*\()/i,/^(?:VAR_SAMP\s*\()/i,/^(?:VARIANCE\s*\()/i,/^(?:CUME_DIST\s*\()/i,/^(?:DENSE_RANK\s*\()/i,/^(?:FIRST_VALUE\s*\()/i,/^(?:LAG\s*\()/i,/^(?:LAST_VALUE\s*\()/i,/^(?:LEAD\s*\()/i,/^(?:RANK\s*\()/i,/^(?:ROW_NUMBER\s*\()/i,/^(?:[0-9]+)/i,/^(?:[0-9]+(?:[YSL]|BD)?)/i,/^(?:[0-9]+E)/i,/^(?:[A-Za-z0-9_]+)/i,/^(?:\u2020)/i,/^(?:\u2021)/i,/^(?:\s+['"])/i,/^(?:[^'"\u2020\u2021]+)/i,/^(?:['"])/i,/^(?:$)/i,/^(?:&&)/i,/^(?:\|\|)/i,/^(?:=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:!=)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:<>)/i,/^(?:<=>)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\+)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:\|)/i,/^(?:\^)/i,/^(?:&)/i,/^(?:,)/i,/^(?:\.)/i,/^(?::)/i,/^(?:;)/i,/^(?:~)/i,/^(?:!)/i,/^(?:\()/i,/^(?:\))/i,/^(?:\[)/i,/^(?:\])/i,/^(?:\$\{[^}]*\})/i,/^(?:`)/i,/^(?:[^`]+)/i,/^(?:`)/i,/^(?:')/i,/^(?:(?:\\\\|\\[']|[^'])+)/i,/^(?:')/i,/^(?:")/i,/^(?:(?:\\\\|\\["]|[^"])+)/i,/^(?:")/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i],
conditions: {"hdfs":{"rules":[116,117,118,119,120,121,163],"inclusive":false},"doubleQuotedValue":{"rules":[158,159,166],"inclusive":false},"singleQuotedValue":{"rules":[155,156,165],"inclusive":false},"backtickedValue":{"rules":[152,153,164],"inclusive":false},"between":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,154,157,160,161,162,167],"inclusive":true},"INITIAL":{"rules":[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,154,157,160,161,167],"inclusive":true}}
});
return lexer;
})();
parser.lexer = lexer;
function Parser () {
  this.yy = {};
}
Parser.prototype = parser;parser.Parser = Parser;
return new Parser;
})();
export default genericSyntaxParser;
